grasscutterTools/mock/user.ts
2022-05-02 18:38:10 +08:00

114 lines
3.8 KiB
TypeScript

import { MockMethod } from "vite-plugin-mock"
import {
successResult,
errorResult,
pageSuccessResult,
requestParams,
getRequestToken
} from "@/utils/result"
import { isLogin, getToken, TokenPrefix } from '@/utils/auth'
export function createFakeUserList() {
return [
{
user_id: '3306',
user_name: 'blindmonk',
real_name: '扫地盲僧',
avatar: 'https://api.multiavatar.com/blindmonk.svg',
desc: '达摩深寺扫地僧,盲崖盘坐思人生',
password: 'blindmonk',
token: 'P1DeqWBao0HTU47Q',
organization: '某大型公司CTO',
location: '中国',
email: '896226896@qq.com',
auths: [],
is_admin: 1,
dev_languages: 'JavaScript/Vue/React/Node/PHP',
blog_github: 'https://github.com/MaleWeb',
blog_juejin: 'https://juejin.cn/user/3016715636842622',
blog_zhihu: 'https://www.zhihu.com/people/blind_monk',
role: 'admin'
}, {
user_id: '80',
user_name: 'test',
real_name: '盲僧水友',
avatar: 'https://api.multiavatar.com/test.svg',
desc: '欢迎加入扫地盲僧水友群',
password: 'test',
token: 'yg8bE8nZwiCL4nQg',
organization: '某大型公司CTO',
location: '中国',
email: '8888@china.com',
auths: [],
is_admin: 0,
dev_languages: 'JavaScript/Vue/React/Node/PHP',
blog_github: 'https://github.com/MaleWeb',
blog_juejin: 'https://juejin.cn/user/3016715636842622',
blog_zhihu: 'https://www.zhihu.com/people/blind_monk',
role: 'user',
}
]
}
export default [
{
url: '/user/profile',
timeout: 200,
method: 'get',
response: (request: requestParams) => {
const token = getRequestToken(request);
if (!token) return errorResult('Invalid token')
const checkUser = createFakeUserList().find((item) => `${TokenPrefix}${item.token}` === token);
if (!checkUser) {
return errorResult('未获得相应的用户信息');
}
return successResult(checkUser);
}
},
{
url: '/user/login',
timeout: 200,
method: 'post',
response: (request: requestParams) => {
const { username, password } = request?.body;
const checkUser = createFakeUserList().find(
(item) => item.user_name === username && item.password === password
)
if (!checkUser) {
return errorResult('不存在该用户');
}
return successResult({ token: checkUser.token })
}
},
{
url: '/user/logout',
timeout: 200,
method: 'post',
response: (request: requestParams) => {
console.dir(request)
const token = getRequestToken(request);
if (!token) return errorResult('token缺失!');
const checkUser = createFakeUserList().find((item) => `${TokenPrefix}${item.token}` === token);
if (!checkUser) {
return errorResult('token缺失!');
}
return successResult('Token 已失效');
},
},
{
url: '/text',
method: 'post',
rawResponse: async (req, res) => {
let reqbody = ''
await new Promise((resolve) => {
req.on('data', (chunk) => {
reqbody += chunk
})
req.on('end', () => resolve(undefined))
})
res.setHeader('Content-Type', 'text/plain')
res.statusCode = 200
res.end(`hello, ${reqbody}`)
},
},
] as MockMethod[]