Update login flow

This commit is contained in:
jeffvli
2022-10-26 16:04:39 -07:00
parent 146a03cb3c
commit cf17ce6e9d
3 changed files with 14 additions and 23 deletions
@@ -18,7 +18,7 @@ export const useLogin = (
onSuccess: (res) => { onSuccess: (res) => {
const props = { const props = {
accessToken: res.data.accessToken, accessToken: res.data.accessToken,
permissions: { isAdmin: res.data.isAdmin }, permissions: { isAdmin: res.data.isAdmin, username: res.data.username },
refreshToken: res.data.refreshToken, refreshToken: res.data.refreshToken,
serverKey: md5(serverUrl), serverKey: md5(serverUrl),
serverUrl, serverUrl,
+7 -5
View File
@@ -12,7 +12,7 @@ export const ax = Axios.create({
ax.interceptors.request.use( ax.interceptors.request.use(
(config) => { (config) => {
const { state } = JSON.parse( const { state } = JSON.parse(
localStorage.getItem('authentication') || '{}' localStorage.getItem('store_authentication') || '{}'
); );
config.baseURL = `${state.serverUrl}/api`; config.baseURL = `${state.serverUrl}/api`;
@@ -34,7 +34,9 @@ ax.interceptors.response.use(
async (err) => { async (err) => {
if (err.response && err.response.status === 401) { if (err.response && err.response.status === 401) {
const { config } = err; const { config } = err;
const auth = JSON.parse(localStorage.getItem('authentication') || '{}'); const auth = JSON.parse(
localStorage.getItem('store_authentication') || '{}'
);
if (err.response.data.error.message === 'jwt expired' && !config.sent) { if (err.response.data.error.message === 'jwt expired' && !config.sent) {
config.sent = true; config.sent = true;
@@ -46,7 +48,7 @@ ax.interceptors.response.use(
).data; ).data;
localStorage.setItem( localStorage.setItem(
'authentication', 'store_authentication',
JSON.stringify({ ...auth, state: { ...auth.state, accessToken } }) JSON.stringify({ ...auth, state: { ...auth.state, accessToken } })
); );
@@ -59,7 +61,7 @@ ax.interceptors.response.use(
} }
localStorage.setItem( localStorage.setItem(
'authentication', 'store_authentication',
JSON.stringify({ JSON.stringify({
...auth, ...auth,
state: { ...auth.state, accessToken: '', refreshToken: '' }, state: { ...auth.state, accessToken: '', refreshToken: '' },
@@ -68,7 +70,7 @@ ax.interceptors.response.use(
if (err.response.data.error.message === 'No auth token') { if (err.response.data.error.message === 'No auth token') {
localStorage.setItem( localStorage.setItem(
'authentication', 'store_authentication',
JSON.stringify({ JSON.stringify({
...auth, ...auth,
state: { ...auth.state, accessToken: '', refreshToken: '' }, state: { ...auth.state, accessToken: '', refreshToken: '' },
+6 -17
View File
@@ -8,6 +8,7 @@ export interface AuthState {
currentServer?: Server; currentServer?: Server;
permissions: { permissions: {
isAdmin: boolean; isAdmin: boolean;
username: string;
}; };
refreshToken: string; refreshToken: string;
serverCredentials: { serverCredentials: {
@@ -37,10 +38,6 @@ export interface AuthSlice extends AuthState {
setCurrentServer: (server: Server) => void; setCurrentServer: (server: Server) => void;
} }
const persistedState = JSON.parse(
localStorage.getItem('authentication') || '{}'
);
export const useAuthStore = create<AuthSlice>()( export const useAuthStore = create<AuthSlice>()(
persist( persist(
devtools( devtools(
@@ -92,12 +89,13 @@ export const useAuthStore = create<AuthSlice>()(
logout: () => { logout: () => {
return set({ return set({
accessToken: undefined, accessToken: undefined,
permissions: { isAdmin: false }, permissions: { isAdmin: false, username: '' },
refreshToken: undefined, refreshToken: undefined,
}); });
}, },
permissions: { permissions: {
isAdmin: false, isAdmin: false,
username: '',
}, },
refreshToken: '', refreshToken: '',
serverCredentials: [], serverCredentials: [],
@@ -105,20 +103,11 @@ export const useAuthStore = create<AuthSlice>()(
serverPermissions: '', serverPermissions: '',
serverUrl: '', serverUrl: '',
setCurrentServer: (server: Server) => { setCurrentServer: (server: Server) => {
const prev = JSON.parse(
localStorage.getItem('authentication') || '{}'
);
localStorage.setItem(
'authentication',
JSON.stringify({
...prev,
state: { ...prev.state, currentServer: server },
})
);
return set({ currentServer: server }); return set({ currentServer: server });
}, },
})) })),
{ name: 'authentication' }
), ),
{ name: 'authentication' } { name: 'store_authentication' }
) )
); );