@@ -5,14 +5,14 @@ import { Location, Route } from 'vue-router'
5
5
import { AppCookie , AppTokenType , AuthUser , FirebaseClaimKey } from 'types-module'
6
6
import { auth } from '~/plugins/fire-init-plugin'
7
7
import {
8
- LocalStorageKey ,
8
+ LocalStorageKey , LOGIN ,
9
9
QueryParameters ,
10
10
Routes ,
11
11
sessionCookieOptionsDev ,
12
12
sessionCookieOptionsProd ,
13
13
StoreConfig
14
14
} from '~/types'
15
- import { authenticatedAllowed , authenticatedNotAllowed } from '~/service/global-service'
15
+ import { authenticatedAllowed , authenticatedNotAllowed , getUserRoute } from '~/service/global-service'
16
16
import { getAuthUser } from '~/service/firebase/firebase-service'
17
17
import { configureAxiosObservable , configureFcmObservable , loadNotificationObservable } from '~/service/rx-service'
18
18
@@ -22,14 +22,15 @@ const forceLogout = (store: Store<any>) => {
22
22
} )
23
23
}
24
24
25
- const getNextRoute = ( route : Route ) : Location => {
25
+ const getNextRoute = ( route : Route , authUser : AuthUser ) : Location => {
26
26
const path : string = route . query [ QueryParameters . NEXT ] as string
27
+ console . log ( `firebaseAuthListenerPlugin next: ${ path } , fullPath: ${ route . fullPath } , route.path: ${ route . path } ` )
27
28
if ( path ) {
28
29
return { path }
29
30
}
30
31
31
32
if ( authenticatedNotAllowed ( route ) || route . path === Routes . ACTION . path ) {
32
- return Routes . PROFILE
33
+ return getUserRoute ( Routes . PROFILE_DYNAMIC , authUser . username )
33
34
}
34
35
35
36
return { path : route . fullPath }
@@ -40,17 +41,20 @@ const setRememberMe = async (store: Store<any>, app: NuxtAppOptions) => {
40
41
await store . dispatch ( StoreConfig . auth . saveRememberMe , rememberMe === undefined ? true : rememberMe )
41
42
}
42
43
43
- const updateAuthStore = async ( firebaseUser : User | null , store : Store < any > ) => {
44
+ const updateAuthStore = async ( firebaseUser : User , store : Store < any > ) => {
44
45
if ( ! firebaseUser ) {
45
46
store . commit ( StoreConfig . auth . setAuthUser , null )
47
+ return null
46
48
}
47
- return await firebaseUser ?. getIdTokenResult ( )
49
+
50
+ return await firebaseUser . getIdTokenResult ( )
48
51
. then ( ( idTokenResult ) => {
49
52
const authUser = getAuthUser ( firebaseUser ) as AuthUser
50
53
if ( authUser ) {
51
54
authUser . username = idTokenResult . claims [ FirebaseClaimKey . USERNAME ]
52
55
store . commit ( StoreConfig . auth . setAuthUser , authUser )
53
56
}
57
+ return authUser
54
58
} )
55
59
}
56
60
@@ -73,7 +77,7 @@ const firebaseAuthListenerPlugin: Plugin = ({ store, app, route, redirect }) =>
73
77
console . log ( error )
74
78
} )
75
79
76
- auth . onAuthStateChanged ( ( firebaseUser : User | null ) => {
80
+ auth . onAuthStateChanged ( ( firebaseUser : User ) => {
77
81
return store . dispatch ( StoreConfig . loading . saveLoading , true )
78
82
. then ( async ( ) => {
79
83
if ( store . state . auth . forceLogout ) {
@@ -82,11 +86,7 @@ const firebaseAuthListenerPlugin: Plugin = ({ store, app, route, redirect }) =>
82
86
}
83
87
84
88
console . log ( 'firebaseAuthListenerPlugin called with a user: ' , ! ! firebaseUser )
85
-
86
- await updateAuthStore ( firebaseUser , store )
87
- . catch ( ( error : Error ) => {
88
- console . log ( error )
89
- } )
89
+ const authUser = await updateAuthStore ( firebaseUser , store )
90
90
91
91
if ( firebaseUser ) {
92
92
await firebaseUser . getIdToken ( )
@@ -97,11 +97,11 @@ const firebaseAuthListenerPlugin: Plugin = ({ store, app, route, redirect }) =>
97
97
configureFcmObservable . next ( )
98
98
} )
99
99
100
- redirect ( getNextRoute ( route ) )
100
+ redirect ( getNextRoute ( route , authUser ) )
101
101
} else {
102
102
logoutActions ( store , app )
103
103
if ( authenticatedAllowed ( route ) ) {
104
- redirect ( Routes . LOGIN )
104
+ location . replace ( LOGIN . path )
105
105
}
106
106
}
107
107
} )
0 commit comments