import type { MockMethod } from 'vite-plugin-mock' import type { requestParams } from './_util' import { getRequestToken, resultError, resultSuccess } from './_util' const token_type = 'bearer' export function createFakeUserList() { return [ { userId: '1', username: 'admin', realName: 'sssgoEasy Admin', avatar: '', desc: 'manager', password: '123456', access_token: 'fakeToken1', refresh_token: 'fakeToken1', expires_in: 37452, scope: 'potoio', token_type, auths: [], modules: [], is_admin: 1, role_name: '管理员角色', mobile: 13000000000, last_login: '2021-11-11 12:00', }, { userId: '2', username: 'test', password: '123456', realName: 'test user', avatar: '', desc: 'tester', access_token: 'fakeToken2', refresh_token: 'fakeToken2', expires_in: 37452, scope: 'potoio', token_type, auths: [], modules: ['home', 'website'], is_admin: 0, role_name: '普通用户角色', mobile: 18000000000, last_login: '2021-11-11 12:12', }, ] } const parseToken = (token: string) => { return token.replace(new RegExp(`${token_type} `), '') } export default [ // mock user login { url: '/v1/user/login', timeout: 200, method: 'post', response: ({ body, query }) => { const { username, password } = query const checkUser = createFakeUserList().find(item => item.username === username && password === item.password) if (!checkUser) return resultError('Incorrect account or password!') return resultSuccess(checkUser) }, }, { url: '/v1/user/refresh', timeout: 200, method: 'post', response: ({ body, query }) => { const { refresh_token } = query const checkUser = createFakeUserList().find(item => item.refresh_token === refresh_token) if (!checkUser) return resultError('Incorrect account or password!') return resultSuccess(checkUser) }, }, { url: '/v1/user/sso', timeout: 200, method: 'post', response: ({ body }) => { const { username, password } = body const checkUser = createFakeUserList().find(item => item.username === username && password === item.password) if (!checkUser) return resultError('Incorrect account or password!') return resultSuccess(checkUser) }, }, { url: '/v1/user/permission', method: 'get', response: (request: requestParams) => { const token = getRequestToken(request) if (!token) return resultError('Invalid token') const checkUser = createFakeUserList().find(item => item.access_token === parseToken(token)) if (!checkUser) return resultError('The corresponding user information was not obtained!') return resultSuccess(checkUser) }, }, { url: '/v1/user/logout', timeout: 200, method: 'get', response: (request: requestParams) => { const token = getRequestToken(request) if (!token) return resultError('Invalid token') const checkUser = createFakeUserList().find(item => item.access_token === parseToken(token)) if (!checkUser) return resultError('Invalid token!') return resultSuccess(undefined, { message: 'Token has been destroyed' }) }, }, { url: '/v1/account/info', method: 'get', response: (request: requestParams) => { const token = getRequestToken(request) if (!token) return resultError('Invalid token') const checkUser = createFakeUserList().find(item => item.access_token === parseToken(token)) if (!checkUser) return resultError('The corresponding user information was not obtained!') return resultSuccess(checkUser) }, }, ] as MockMethod[]