-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathauthSlice.ts
More file actions
128 lines (125 loc) · 3.96 KB
/
authSlice.ts
File metadata and controls
128 lines (125 loc) · 3.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import reducerRegistry from 'Redux/reducers/ReducerRegistry'
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import type { BackendStatus, UserInfo, Config, Location, AuthState } from './types/authTypes'
const initialState: AuthState = {
isAuthenticated: false,
userinfo: null,
userinfo_jwt: null,
token: null,
issuer: null,
permissions: [],
location: {},
config: {},
defaultToken: null,
codeChallenge: null,
codeChallengeMethod: 'S256',
codeVerifier: null,
backendStatus: {
active: true,
errorMessage: null,
statusCode: null,
},
loadingConfig: false,
idToken: null,
JwtToken: null,
userInum: null,
isUserInfoFetched: false,
}
const authSlice = createSlice({
name: 'auth',
initialState,
reducers: {
getOAuth2Config: (state, action: PayloadAction<any>) => {
state.defaultToken = action.payload
},
setBackendStatus: (state, action: PayloadAction<BackendStatus>) => {
state.backendStatus.active = action.payload.active
state.backendStatus.errorMessage = action.payload.errorMessage
state.backendStatus.statusCode = action.payload.statusCode
},
getOAuth2ConfigResponse: (state, action: PayloadAction<{ config?: Config }>) => {
if (action.payload?.config) {
const newDataConfigObject = { ...state.config, ...action.payload.config }
state.config = newDataConfigObject
}
},
setOAuthState: (state, action: PayloadAction<{ authState: any }>) => {
state.authState = action.payload?.authState
},
setAuthState: (state, action: PayloadAction<{ state: boolean }>) => {
state.isAuthenticated = action.payload?.state
},
getUserInfo: (_state, _action: PayloadAction<any>) => {},
getUserInfoResponse: (
state,
action: PayloadAction<{
ujwt?: string
userinfo?: UserInfo
idToken?: string
JwtToken?: string
isUserInfoFetched?: boolean
}>,
) => {
if (action.payload?.ujwt) {
state.JwtToken = action.payload.JwtToken ?? null
state.userinfo = action.payload.userinfo ?? null
state.userinfo_jwt = action.payload.ujwt
state.idToken = action.payload.idToken ?? null
state.isUserInfoFetched = action.payload.isUserInfoFetched ?? false
state.isAuthenticated = true
state.userInum = action.payload?.userinfo?.inum ?? null
} else {
state.isAuthenticated = true
}
},
getAPIAccessToken: (_state, _action: PayloadAction<any>) => {},
getAPIAccessTokenResponse: (
state,
action: PayloadAction<{ access_token?: string; scopes?: string[]; issuer?: string }>,
) => {
if (action.payload?.access_token) {
state.token = {
access_token: action.payload.access_token,
scopes: action.payload.scopes || [],
}
state.issuer = action.payload.issuer || null
state.permissions = action.payload.scopes || []
state.isAuthenticated = true
}
},
getUserLocation: (_state, _action: PayloadAction<any>) => {},
getUserLocationResponse: (state, action: PayloadAction<{ location?: Location }>) => {
if (action.payload?.location) {
state.location = action.payload.location
}
},
setApiDefaultToken: (state, action: PayloadAction<any>) => {
state.defaultToken = action.payload
state.issuer = action.payload.issuer
},
putConfigWorker: (state, _action: PayloadAction<any>) => {
state.loadingConfig = true
},
putConfigWorkerResponse: (state) => {
state.loadingConfig = false
},
},
})
export const {
getOAuth2Config,
getOAuth2ConfigResponse,
setOAuthState,
setAuthState,
getUserInfo,
getUserInfoResponse,
getAPIAccessToken,
getAPIAccessTokenResponse,
getUserLocation,
getUserLocationResponse,
setApiDefaultToken,
setBackendStatus,
putConfigWorker,
putConfigWorkerResponse,
} = authSlice.actions
export default authSlice.reducer
reducerRegistry.register('authReducer', authSlice.reducer)