From ccbd48a33902702c5c6870df23e1cd255e588616 Mon Sep 17 00:00:00 2001 From: zhuguifei <zhuguifei@zhuguifeideiMac.local> Date: 星期一, 10 三月 2025 16:40:29 +0800 Subject: [PATCH] 去除mock --- /dev/null | 68 ---------------------------------- 1 files changed, 0 insertions(+), 68 deletions(-) diff --git a/eims-ui/apps/backend-mock/.env b/eims-ui/apps/backend-mock/.env deleted file mode 100644 index b20c4a6..0000000 --- a/eims-ui/apps/backend-mock/.env +++ /dev/null @@ -1,3 +0,0 @@ -PORT=5320 -ACCESS_TOKEN_SECRET=access_token_secret -REFRESH_TOKEN_SECRET=refresh_token_secret diff --git a/eims-ui/apps/backend-mock/README.md b/eims-ui/apps/backend-mock/README.md deleted file mode 100644 index 401bda7..0000000 --- a/eims-ui/apps/backend-mock/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# @vben/backend-mock - -## Description - -Vben Admin 鏁版嵁 mock 鏈嶅姟锛屾病鏈夊鎺ヤ换浣曠殑鏁版嵁搴擄紝鎵�鏈夋暟鎹兘鏄ā鎷熺殑锛岀敤浜庡墠绔紑鍙戞椂鎻愪緵鏁版嵁鏀寔銆傜嚎涓婄幆澧冧笉鍐嶆彁渚� mock 闆嗘垚锛屽彲鑷閮ㄧ讲鏈嶅姟鎴栬�呭鎺ョ湡瀹炴暟鎹紝鐢变簬 `mock.js` 绛夊伐鍏锋湁涓�浜涢檺鍒讹紝姣斿涓婁紶鏂囦欢涓嶈銆佹棤娉曟ā鎷熷鏉傜殑閫昏緫绛夛紝鎵�浠ヨ繖閲屼娇鐢ㄤ簡鐪熷疄鐨勫悗绔湇鍔℃潵瀹炵幇銆傚敮涓�楹荤儲鐨勬槸鏈湴闇�瑕佸悓鏃跺惎鍔ㄥ悗绔湇鍔″拰鍓嶇鏈嶅姟锛屼絾鏄繖鏍峰彲浠ユ洿濂界殑妯℃嫙鐪熷疄鐜銆傝鏈嶅姟涓嶉渶瑕佹墜鍔ㄥ惎鍔紝宸茬粡闆嗘垚鍦� vite 鎻掍欢鍐咃紝闅忓簲鐢ㄤ竴璧峰惎鐢ㄣ�� - -## Running the app - -```bash -# development -$ pnpm run start - -# production mode -$ pnpm run build -``` diff --git a/eims-ui/apps/backend-mock/api/auth/codes.ts b/eims-ui/apps/backend-mock/api/auth/codes.ts deleted file mode 100644 index 7ba0127..0000000 --- a/eims-ui/apps/backend-mock/api/auth/codes.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { verifyAccessToken } from '~/utils/jwt-utils'; -import { unAuthorizedResponse } from '~/utils/response'; - -export default eventHandler((event) => { - const userinfo = verifyAccessToken(event); - if (!userinfo) { - return unAuthorizedResponse(event); - } - - const codes = - MOCK_CODES.find((item) => item.username === userinfo.username)?.codes ?? []; - - return useResponseSuccess(codes); -}); diff --git a/eims-ui/apps/backend-mock/api/auth/login.post.ts b/eims-ui/apps/backend-mock/api/auth/login.post.ts deleted file mode 100644 index df5737a..0000000 --- a/eims-ui/apps/backend-mock/api/auth/login.post.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - clearRefreshTokenCookie, - setRefreshTokenCookie, -} from '~/utils/cookie-utils'; -import { generateAccessToken, generateRefreshToken } from '~/utils/jwt-utils'; -import { forbiddenResponse } from '~/utils/response'; - -export default defineEventHandler(async (event) => { - const { password, username } = await readBody(event); - if (!password || !username) { - setResponseStatus(event, 400); - return useResponseError( - 'BadRequestException', - 'Username and password are required', - ); - } - - const findUser = MOCK_USERS.find( - (item) => item.username === username && item.password === password, - ); - - if (!findUser) { - clearRefreshTokenCookie(event); - return forbiddenResponse(event, 'Username or password is incorrect.'); - } - - const accessToken = generateAccessToken(findUser); - const refreshToken = generateRefreshToken(findUser); - - setRefreshTokenCookie(event, refreshToken); - - return useResponseSuccess({ - ...findUser, - accessToken, - }); -}); diff --git a/eims-ui/apps/backend-mock/api/auth/logout.post.ts b/eims-ui/apps/backend-mock/api/auth/logout.post.ts deleted file mode 100644 index ac6afe9..0000000 --- a/eims-ui/apps/backend-mock/api/auth/logout.post.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { - clearRefreshTokenCookie, - getRefreshTokenFromCookie, -} from '~/utils/cookie-utils'; - -export default defineEventHandler(async (event) => { - const refreshToken = getRefreshTokenFromCookie(event); - if (!refreshToken) { - return useResponseSuccess(''); - } - - clearRefreshTokenCookie(event); - - return useResponseSuccess(''); -}); diff --git a/eims-ui/apps/backend-mock/api/auth/refresh.post.ts b/eims-ui/apps/backend-mock/api/auth/refresh.post.ts deleted file mode 100644 index 7df4d34..0000000 --- a/eims-ui/apps/backend-mock/api/auth/refresh.post.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { - clearRefreshTokenCookie, - getRefreshTokenFromCookie, - setRefreshTokenCookie, -} from '~/utils/cookie-utils'; -import { verifyRefreshToken } from '~/utils/jwt-utils'; -import { forbiddenResponse } from '~/utils/response'; - -export default defineEventHandler(async (event) => { - const refreshToken = getRefreshTokenFromCookie(event); - if (!refreshToken) { - return forbiddenResponse(event); - } - - clearRefreshTokenCookie(event); - - const userinfo = verifyRefreshToken(refreshToken); - if (!userinfo) { - return forbiddenResponse(event); - } - - const findUser = MOCK_USERS.find( - (item) => item.username === userinfo.username, - ); - if (!findUser) { - return forbiddenResponse(event); - } - const accessToken = generateAccessToken(findUser); - - setRefreshTokenCookie(event, refreshToken); - - return accessToken; -}); diff --git a/eims-ui/apps/backend-mock/api/menu/all.ts b/eims-ui/apps/backend-mock/api/menu/all.ts deleted file mode 100644 index 580cee4..0000000 --- a/eims-ui/apps/backend-mock/api/menu/all.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { verifyAccessToken } from '~/utils/jwt-utils'; -import { unAuthorizedResponse } from '~/utils/response'; - -export default eventHandler(async (event) => { - const userinfo = verifyAccessToken(event); - if (!userinfo) { - return unAuthorizedResponse(event); - } - - const menus = - MOCK_MENUS.find((item) => item.username === userinfo.username)?.menus ?? []; - return useResponseSuccess(menus); -}); diff --git a/eims-ui/apps/backend-mock/api/status.ts b/eims-ui/apps/backend-mock/api/status.ts deleted file mode 100644 index 41773e1..0000000 --- a/eims-ui/apps/backend-mock/api/status.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default eventHandler((event) => { - const { status } = getQuery(event); - setResponseStatus(event, Number(status)); - return useResponseError(`${status}`); -}); diff --git a/eims-ui/apps/backend-mock/api/table/list.ts b/eims-ui/apps/backend-mock/api/table/list.ts deleted file mode 100644 index 4a0db94..0000000 --- a/eims-ui/apps/backend-mock/api/table/list.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { faker } from '@faker-js/faker'; -import { verifyAccessToken } from '~/utils/jwt-utils'; -import { unAuthorizedResponse } from '~/utils/response'; - -function generateMockDataList(count: number) { - const dataList = []; - - for (let i = 0; i < count; i++) { - const dataItem = { - id: faker.string.uuid(), - imageUrl: faker.image.avatar(), - imageUrl2: faker.image.avatar(), - open: faker.datatype.boolean(), - status: faker.helpers.arrayElement(['success', 'error', 'warning']), - productName: faker.commerce.productName(), - price: faker.commerce.price(), - currency: faker.finance.currencyCode(), - quantity: faker.number.int({ min: 1, max: 100 }), - available: faker.datatype.boolean(), - category: faker.commerce.department(), - releaseDate: faker.date.past(), - rating: faker.number.float({ min: 1, max: 5 }), - description: faker.commerce.productDescription(), - weight: faker.number.float({ min: 0.1, max: 10 }), - color: faker.color.human(), - inProduction: faker.datatype.boolean(), - tags: Array.from({ length: 3 }, () => faker.commerce.productAdjective()), - }; - - dataList.push(dataItem); - } - - return dataList; -} - -const mockData = generateMockDataList(100); - -export default eventHandler(async (event) => { - const userinfo = verifyAccessToken(event); - if (!userinfo) { - return unAuthorizedResponse(event); - } - - await sleep(600); - - const { page, pageSize } = getQuery(event); - return usePageResponseSuccess(page as string, pageSize as string, mockData); -}); diff --git a/eims-ui/apps/backend-mock/api/test.get.ts b/eims-ui/apps/backend-mock/api/test.get.ts deleted file mode 100644 index ca4a500..0000000 --- a/eims-ui/apps/backend-mock/api/test.get.ts +++ /dev/null @@ -1 +0,0 @@ -export default defineEventHandler(() => 'Test get handler'); diff --git a/eims-ui/apps/backend-mock/api/test.post.ts b/eims-ui/apps/backend-mock/api/test.post.ts deleted file mode 100644 index 698cf21..0000000 --- a/eims-ui/apps/backend-mock/api/test.post.ts +++ /dev/null @@ -1 +0,0 @@ -export default defineEventHandler(() => 'Test post handler'); diff --git a/eims-ui/apps/backend-mock/api/user/info.ts b/eims-ui/apps/backend-mock/api/user/info.ts deleted file mode 100644 index cfa2346..0000000 --- a/eims-ui/apps/backend-mock/api/user/info.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { verifyAccessToken } from '~/utils/jwt-utils'; -import { unAuthorizedResponse } from '~/utils/response'; - -export default eventHandler((event) => { - const userinfo = verifyAccessToken(event); - if (!userinfo) { - return unAuthorizedResponse(event); - } - return useResponseSuccess(userinfo); -}); diff --git a/eims-ui/apps/backend-mock/error.ts b/eims-ui/apps/backend-mock/error.ts deleted file mode 100644 index e20beac..0000000 --- a/eims-ui/apps/backend-mock/error.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { NitroErrorHandler } from 'nitropack'; - -const errorHandler: NitroErrorHandler = function (error, event) { - event.node.res.end(`[Error Handler] ${error.stack}`); -}; - -export default errorHandler; diff --git a/eims-ui/apps/backend-mock/middleware/1.api.ts b/eims-ui/apps/backend-mock/middleware/1.api.ts deleted file mode 100644 index 84e2ce0..0000000 --- a/eims-ui/apps/backend-mock/middleware/1.api.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default defineEventHandler((event) => { - if (event.method === 'OPTIONS') { - event.node.res.statusCode = 204; - event.node.res.statusMessage = 'No Content.'; - return 'OK'; - } -}); diff --git a/eims-ui/apps/backend-mock/nitro.config.ts b/eims-ui/apps/backend-mock/nitro.config.ts deleted file mode 100644 index c2d7297..0000000 --- a/eims-ui/apps/backend-mock/nitro.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import errorHandler from './error'; - -process.env.COMPATIBILITY_DATE = new Date().toISOString(); -export default defineNitroConfig({ - devErrorHandler: errorHandler, - errorHandler: '~/error', - routeRules: { - '/api/**': { - cors: true, - headers: { - 'Access-Control-Allow-Credentials': 'true', - 'Access-Control-Allow-Headers': '*', - 'Access-Control-Allow-Methods': 'GET,HEAD,PUT,PATCH,POST,DELETE', - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Expose-Headers': '*', - }, - }, - }, -}); diff --git a/eims-ui/apps/backend-mock/package.json b/eims-ui/apps/backend-mock/package.json deleted file mode 100644 index cc0b8d5..0000000 --- a/eims-ui/apps/backend-mock/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@vben/backend-mock", - "version": "0.0.1", - "description": "", - "private": true, - "license": "MIT", - "author": "", - "scripts": { - "build": "nitro build", - "start": "nitro dev" - }, - "dependencies": { - "@faker-js/faker": "catalog:", - "jsonwebtoken": "catalog:", - "nitropack": "catalog:" - }, - "devDependencies": { - "@types/jsonwebtoken": "catalog:", - "h3": "catalog:" - } -} diff --git "a/eims-ui/apps/backend-mock/routes/\133...\135.ts" "b/eims-ui/apps/backend-mock/routes/\133...\135.ts" deleted file mode 100644 index 70c5f7c..0000000 --- "a/eims-ui/apps/backend-mock/routes/\133...\135.ts" +++ /dev/null @@ -1,12 +0,0 @@ -export default defineEventHandler(() => { - return ` -<h1>Hello Vben Admin</h1> -<h2>Mock service is starting</h2> -<ul> -<li><a href="/api/user">/api/user/info</a></li> -<li><a href="/api/menu">/api/menu/all</a></li> -<li><a href="/api/auth/codes">/api/auth/codes</a></li> -<li><a href="/api/auth/login">/api/auth/login</a></li> -</ul> -`; -}); diff --git a/eims-ui/apps/backend-mock/tsconfig.build.json b/eims-ui/apps/backend-mock/tsconfig.build.json deleted file mode 100644 index 64f86c6..0000000 --- a/eims-ui/apps/backend-mock/tsconfig.build.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] -} diff --git a/eims-ui/apps/backend-mock/tsconfig.json b/eims-ui/apps/backend-mock/tsconfig.json deleted file mode 100644 index 43008af..0000000 --- a/eims-ui/apps/backend-mock/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./.nitro/types/tsconfig.json" -} diff --git a/eims-ui/apps/backend-mock/utils/cookie-utils.ts b/eims-ui/apps/backend-mock/utils/cookie-utils.ts deleted file mode 100644 index 0d92f57..0000000 --- a/eims-ui/apps/backend-mock/utils/cookie-utils.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { EventHandlerRequest, H3Event } from 'h3'; - -export function clearRefreshTokenCookie(event: H3Event<EventHandlerRequest>) { - deleteCookie(event, 'jwt', { - httpOnly: true, - sameSite: 'none', - secure: true, - }); -} - -export function setRefreshTokenCookie( - event: H3Event<EventHandlerRequest>, - refreshToken: string, -) { - setCookie(event, 'jwt', refreshToken, { - httpOnly: true, - maxAge: 24 * 60 * 60 * 1000, - sameSite: 'none', - secure: true, - }); -} - -export function getRefreshTokenFromCookie(event: H3Event<EventHandlerRequest>) { - const refreshToken = getCookie(event, 'jwt'); - return refreshToken; -} diff --git a/eims-ui/apps/backend-mock/utils/jwt-utils.ts b/eims-ui/apps/backend-mock/utils/jwt-utils.ts deleted file mode 100644 index 8cfc684..0000000 --- a/eims-ui/apps/backend-mock/utils/jwt-utils.ts +++ /dev/null @@ -1,59 +0,0 @@ -import type { EventHandlerRequest, H3Event } from 'h3'; - -import jwt from 'jsonwebtoken'; - -import { UserInfo } from './mock-data'; - -// TODO: Replace with your own secret key -const ACCESS_TOKEN_SECRET = 'access_token_secret'; -const REFRESH_TOKEN_SECRET = 'refresh_token_secret'; - -export interface UserPayload extends UserInfo { - iat: number; - exp: number; -} - -export function generateAccessToken(user: UserInfo) { - return jwt.sign(user, ACCESS_TOKEN_SECRET, { expiresIn: '7d' }); -} - -export function generateRefreshToken(user: UserInfo) { - return jwt.sign(user, REFRESH_TOKEN_SECRET, { - expiresIn: '30d', - }); -} - -export function verifyAccessToken( - event: H3Event<EventHandlerRequest>, -): null | Omit<UserInfo, 'password'> { - const authHeader = getHeader(event, 'Authorization'); - if (!authHeader?.startsWith('Bearer')) { - return null; - } - - const token = authHeader.split(' ')[1]; - try { - const decoded = jwt.verify(token, ACCESS_TOKEN_SECRET) as UserPayload; - - const username = decoded.username; - const user = MOCK_USERS.find((item) => item.username === username); - const { password: _pwd, ...userinfo } = user; - return userinfo; - } catch { - return null; - } -} - -export function verifyRefreshToken( - token: string, -): null | Omit<UserInfo, 'password'> { - try { - const decoded = jwt.verify(token, REFRESH_TOKEN_SECRET) as UserPayload; - const username = decoded.username; - const user = MOCK_USERS.find((item) => item.username === username); - const { password: _pwd, ...userinfo } = user; - return userinfo; - } catch { - return null; - } -} diff --git a/eims-ui/apps/backend-mock/utils/mock-data.ts b/eims-ui/apps/backend-mock/utils/mock-data.ts deleted file mode 100644 index 71970a2..0000000 --- a/eims-ui/apps/backend-mock/utils/mock-data.ts +++ /dev/null @@ -1,186 +0,0 @@ -export interface UserInfo { - id: number; - password: string; - realName: string; - roles: string[]; - username: string; -} - -export const MOCK_USERS: UserInfo[] = [ - { - id: 0, - password: '123456', - realName: 'Vben', - roles: ['super'], - username: 'vben', - }, - { - id: 1, - password: '123456', - realName: 'Admin', - roles: ['admin'], - username: 'admin', - }, - { - id: 2, - password: '123456', - realName: 'Jack', - roles: ['user'], - username: 'jack', - }, -]; - -export const MOCK_CODES = [ - // super - { - codes: ['AC_100100', 'AC_100110', 'AC_100120', 'AC_100010'], - username: 'vben', - }, - { - // admin - codes: ['AC_100010', 'AC_100020', 'AC_100030'], - username: 'admin', - }, - { - // user - codes: ['AC_1000001', 'AC_1000002'], - username: 'jack', - }, -]; - -const dashboardMenus = [ - { - component: 'BasicLayout', - meta: { - order: -1, - title: 'page.dashboard.title', - }, - name: 'Dashboard', - path: '/', - redirect: '/analytics', - children: [ - { - name: 'Analytics', - path: '/analytics', - component: '/dashboard/analytics/index', - meta: { - affixTab: true, - title: 'page.dashboard.analytics', - }, - }, - { - name: 'Workspace', - path: '/workspace', - component: '/dashboard/workspace/index', - meta: { - title: 'page.dashboard.workspace', - }, - }, - ], - }, -]; - -const createDemosMenus = (role: 'admin' | 'super' | 'user') => { - const roleWithMenus = { - admin: { - component: '/demos/access/admin-visible', - meta: { - icon: 'mdi:button-cursor', - title: 'demos.access.adminVisible', - }, - name: 'AccessAdminVisibleDemo', - path: '/demos/access/admin-visible', - }, - super: { - component: '/demos/access/super-visible', - meta: { - icon: 'mdi:button-cursor', - title: 'demos.access.superVisible', - }, - name: 'AccessSuperVisibleDemo', - path: '/demos/access/super-visible', - }, - user: { - component: '/demos/access/user-visible', - meta: { - icon: 'mdi:button-cursor', - title: 'demos.access.userVisible', - }, - name: 'AccessUserVisibleDemo', - path: '/demos/access/user-visible', - }, - }; - - return [ - { - component: 'BasicLayout', - meta: { - icon: 'ic:baseline-view-in-ar', - keepAlive: true, - order: 1000, - title: 'demos.title', - }, - name: 'Demos', - path: '/demos', - redirect: '/demos/access', - children: [ - { - name: 'AccessDemos', - path: '/demosaccess', - meta: { - icon: 'mdi:cloud-key-outline', - title: 'demos.access.backendPermissions', - }, - redirect: '/demos/access/page-control', - children: [ - { - name: 'AccessPageControlDemo', - path: '/demos/access/page-control', - component: '/demos/access/index', - meta: { - icon: 'mdi:page-previous-outline', - title: 'demos.access.pageAccess', - }, - }, - { - name: 'AccessButtonControlDemo', - path: '/demos/access/button-control', - component: '/demos/access/button-control', - meta: { - icon: 'mdi:button-cursor', - title: 'demos.access.buttonControl', - }, - }, - { - name: 'AccessMenuVisible403Demo', - path: '/demos/access/menu-visible-403', - component: '/demos/access/menu-visible-403', - meta: { - authority: ['no-body'], - icon: 'mdi:button-cursor', - menuVisibleWithForbidden: true, - title: 'demos.access.menuVisible403', - }, - }, - roleWithMenus[role], - ], - }, - ], - }, - ]; -}; - -export const MOCK_MENUS = [ - { - menus: [...dashboardMenus, ...createDemosMenus('super')], - username: 'vben', - }, - { - menus: [...dashboardMenus, ...createDemosMenus('admin')], - username: 'admin', - }, - { - menus: [...dashboardMenus, ...createDemosMenus('user')], - username: 'jack', - }, -]; diff --git a/eims-ui/apps/backend-mock/utils/response.ts b/eims-ui/apps/backend-mock/utils/response.ts deleted file mode 100644 index 2a5a908..0000000 --- a/eims-ui/apps/backend-mock/utils/response.ts +++ /dev/null @@ -1,68 +0,0 @@ -import type { EventHandlerRequest, H3Event } from 'h3'; - -export function useResponseSuccess<T = any>(data: T) { - return { - code: 0, - data, - error: null, - message: 'ok', - }; -} - -export function usePageResponseSuccess<T = any>( - page: number | string, - pageSize: number | string, - list: T[], - { message = 'ok' } = {}, -) { - const pageData = pagination( - Number.parseInt(`${page}`), - Number.parseInt(`${pageSize}`), - list, - ); - - return { - ...useResponseSuccess({ - items: pageData, - total: list.length, - }), - message, - }; -} - -export function useResponseError(message: string, error: any = null) { - return { - code: -1, - data: null, - error, - message, - }; -} - -export function forbiddenResponse( - event: H3Event<EventHandlerRequest>, - message = 'Forbidden Exception', -) { - setResponseStatus(event, 403); - return useResponseError(message, message); -} - -export function unAuthorizedResponse(event: H3Event<EventHandlerRequest>) { - setResponseStatus(event, 401); - return useResponseError('Unauthorized Exception', 'Unauthorized Exception'); -} - -export function sleep(ms: number) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - -export function pagination<T = any>( - pageNo: number, - pageSize: number, - array: T[], -): T[] { - const offset = (pageNo - 1) * Number(pageSize); - return offset + Number(pageSize) >= array.length - ? array.slice(offset) - : array.slice(offset, offset + Number(pageSize)); -} -- Gitblit v1.9.3