mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-10 04:30:25 +02:00
Update login flow
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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: '' },
|
||||||
|
|||||||
@@ -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' }
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user