1
1
<template >
2
2
<div class =" flex items-center justify-center min-h-screen" >
3
- <Spinner />
3
+ <div v-if =" error" class =" py-8 px-4 mx-auto max-w-screen-xl lg:py-16 lg:px-6" >
4
+ <div class =" mx-auto max-w-screen-sm text-center" >
5
+ <h1 class =" mb-4 text-7xl tracking-tight font-extrabold lg:text-9xl text-lightPrimary dark:text-darkPrimary" >
6
+ Oops!
7
+ </h1 >
8
+ <p class =" mb-4 text-3xl tracking-tight font-bold text-gray-900 md:text-4xl dark:text-white" >
9
+ Authentication Failed
10
+ </p >
11
+ <p class =" mb-4 text-lg font-light text-gray-500 dark:text-gray-400" >
12
+ {{ error }}
13
+ </p >
14
+ <div class =" flex justify-center" >
15
+ <LinkButton to =" /login" >Back to Login</LinkButton >
16
+ </div >
17
+ </div >
18
+ </div >
19
+ <Spinner v-else />
4
20
</div >
5
21
</template >
6
22
7
23
<script setup>
8
- import { onMounted } from ' vue' ;
24
+ import { onMounted , ref } from ' vue' ;
9
25
import { useUserStore } from ' @/stores/user' ;
10
26
import { useRouter , useRoute } from ' vue-router' ;
11
27
import { callAdminForthApi } from ' @/utils' ;
12
- import { Spinner } from ' @/afcl' ;
28
+ import { Spinner , LinkButton } from ' @/afcl' ;
13
29
14
30
const router = useRouter ();
15
31
const userStore = useUserStore ();
16
32
const route = useRoute ();
33
+ const error = ref (null );
17
34
18
35
onMounted (async () => {
19
36
const urlParams = new URLSearchParams (window .location .search );
@@ -31,18 +48,16 @@ onMounted(async () => {
31
48
path: ` /oauth/callback?code=${ encodedCode} &state=${ encodedState} &redirect_uri=${ redirectUri} ` ,
32
49
method: ' GET' ,
33
50
});
51
+
34
52
if (response .allowedLogin ) {
35
53
await userStore .finishLogin ();
36
54
} else if (response .redirectTo ) {
37
55
router .push (response .redirectTo );
38
56
} else if (response .error ) {
39
- router .push ({
40
- name: ' login' ,
41
- query: { error: response .error }
42
- });
57
+ error .value = response .error ;
43
58
}
44
59
} else {
45
- router . push ({ name : ' login ' }) ;
60
+ error . value = ' Invalid authentication request. Missing required parameters. ' ;
46
61
}
47
62
});
48
63
</script >
0 commit comments