From ab6dc6275da9810c504b5de5f0fbdd4731ed2e2f Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Sun, 21 May 2023 17:19:36 +0800 Subject: [PATCH] refactor(admin-next): use builtin createAuthProvider replace custom auth provider --- server/admin-next/src/client/auth.ts | 68 ++-------------------------- 1 file changed, 5 insertions(+), 63 deletions(-) diff --git a/server/admin-next/src/client/auth.ts b/server/admin-next/src/client/auth.ts index d79c9b61..2ca5a28c 100644 --- a/server/admin-next/src/client/auth.ts +++ b/server/admin-next/src/client/auth.ts @@ -1,66 +1,8 @@ -import type { AuthProvider } from 'tushan'; +import { AuthProvider, createAuthProvider } from 'tushan'; export const authStorageKey = 'tailchat:admin:auth'; -export const authProvider: AuthProvider = { - login: ({ username, password }) => { - const request = new Request('/admin/api/login', { - method: 'POST', - body: JSON.stringify({ username, password }), - headers: new Headers({ 'Content-Type': 'application/json' }), - }); - - return fetch(request) - .then((response) => { - return response.json(); - }) - .then((auth) => { - console.log(auth); - localStorage.setItem(authStorageKey, JSON.stringify(auth)); - }) - .catch(() => { - throw new Error('Login Failed'); - }); - }, - logout: () => { - localStorage.removeItem(authStorageKey); - return Promise.resolve(); - }, - checkAuth: () => { - const auth = localStorage.getItem(authStorageKey); - if (auth) { - try { - const obj = JSON.parse(auth); - if (obj.expiredAt && Date.now() < obj.expiredAt) { - return Promise.resolve(); - } - } catch (err) {} - } - - return Promise.reject(); - }, - checkError: (error) => { - const status = error.status; - if (status === 401 || status === 403) { - localStorage.removeItem(authStorageKey); - return Promise.reject(); - } - - // other error code (404, 500, etc): no need to log out - return Promise.resolve(); - }, - getIdentity: () => { - const { username } = JSON.parse( - localStorage.getItem(authStorageKey) ?? '{}' - ); - if (!username) { - return Promise.reject(); - } - - return Promise.resolve({ - id: username, - fullName: username, - }); - }, - getPermissions: () => Promise.resolve(''), -}; +export const authProvider: AuthProvider = createAuthProvider({ + authStorageKey, + loginUrl: '/admin/api/login', +});