mirror of
https://github.com/versia-pub/frontend.git
synced 2025-12-06 16:38:20 +01:00
fix: 🚑 Fix errors when logging in with incorrect credentials
This commit is contained in:
parent
a2a2149776
commit
63cbe6bb82
10
app.vue
10
app.vue
|
|
@ -42,15 +42,19 @@ if (code) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(tokenData, async () => {
|
watch(
|
||||||
|
tokenData,
|
||||||
|
async () => {
|
||||||
if (tokenData.value && !me.value) {
|
if (tokenData.value && !me.value) {
|
||||||
const response = await client.value?.verifyAccountCredentials()
|
const response = await client.value?.verifyAccountCredentials();
|
||||||
|
|
||||||
if (response?.data) {
|
if (response?.data) {
|
||||||
me.value = response.data;
|
me.value = response.data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, { immediate: true })
|
},
|
||||||
|
{ immediate: true },
|
||||||
|
);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
export const useOAuthProviders = async () => {
|
export const useOAuthProviders = async () => {
|
||||||
|
if (process.server) return ref([]);
|
||||||
const providers = await fetch(
|
const providers = await fetch(
|
||||||
new URL("/oauth/providers", useBaseUrl().value),
|
new URL("/oauth/providers", useBaseUrl().value),
|
||||||
).then((d) => d.json());
|
).then((d) => d.json());
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
layout: "app",
|
layout: "app",
|
||||||
})
|
});
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const client = useMegalodon();
|
const client = useMegalodon();
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<ClientOnly>
|
|
||||||
<div class="flex min-h-screen relative flex-col justify-center py-12 lg:px-8">
|
<div class="flex min-h-screen relative flex-col justify-center py-12 lg:px-8">
|
||||||
<img src="https://camo.githubusercontent.com/353460d1fdb1667ec993159270dcece12c491fb38165460215a519ab93f4e554/68747470733a2f2f63646e2d7765622e63706c757370617463682e636f6d2f6c7973616e642e77656270"
|
<img src="https://camo.githubusercontent.com/353460d1fdb1667ec993159270dcece12c491fb38165460215a519ab93f4e554/68747470733a2f2f63646e2d7765622e63706c757370617463682e636f6d2f6c7973616e642e77656270"
|
||||||
alt="Lysand logo" class="mx-auto h-24 hidden md:block" />
|
alt="Lysand logo" class="mx-auto h-24 hidden md:block" />
|
||||||
<div v-if="validUrlParameters"
|
<div v-if="validUrlParameters"
|
||||||
class="mt-10 sm:mx-auto w-full sm:max-w-md md:bg-dark-900 px-10 py-10 rounded md:ring-1 md:ring-white/10">
|
class="mt-10 sm:mx-auto w-full sm:max-w-md md:bg-dark-900 px-10 py-10 rounded md:ring-1 md:ring-white/10">
|
||||||
|
<div v-if="error" class="ring-1 ring-white/10 rounded p-4 bg-red-500 text-white mb-10">
|
||||||
|
<h2 class="font-bold text-lg">An error occured</h2>
|
||||||
|
<span class="text-sm">{{ error_description }}</span>
|
||||||
|
</div>
|
||||||
<VeeForm class="space-y-6" method="POST" :validation-schema="schema"
|
<VeeForm class="space-y-6" method="POST" :validation-schema="schema"
|
||||||
:action="`/api/auth/login?redirect_uri=${redirect_uri}&response_type=${response_type}&client_id=${client_id}&scope=${scope}`">
|
:action="`/api/auth/login?redirect_uri=${redirect_uri}&response_type=${response_type}&client_id=${client_id}&scope=${scope}`">
|
||||||
|
|
||||||
|
|
@ -76,12 +79,10 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ClientOnly>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { toTypedSchema } from "@vee-validate/zod";
|
import { toTypedSchema } from "@vee-validate/zod";
|
||||||
import { useRoute } from "vue-router";
|
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import LoginInput from "../../components/LoginInput.vue";
|
import LoginInput from "../../components/LoginInput.vue";
|
||||||
|
|
||||||
|
|
@ -92,14 +93,15 @@ const schema = toTypedSchema(
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
const query = useRoute().query;
|
const query = new URLSearchParams(
|
||||||
|
window?.location.search ?? useRequestURL().search,
|
||||||
const redirect_uri = query.redirect_uri;
|
);
|
||||||
const response_type = query.response_type;
|
const redirect_uri = query.get("redirect_uri");
|
||||||
const client_id = query.client_id;
|
const response_type = query.get("response_type");
|
||||||
const scope = query.scope;
|
const client_id = query.get("client_id");
|
||||||
const error = decodeURIComponent(query.error as string);
|
const scope = query.get("scope");
|
||||||
const error_description = decodeURIComponent(query.error_description as string);
|
const error = query.get("error");
|
||||||
|
const error_description = query.get("error_description");
|
||||||
|
|
||||||
const validUrlParameters = redirect_uri && response_type && client_id && scope;
|
const validUrlParameters = redirect_uri && response_type && client_id && scope;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue