refactor: 【web-ant】重构认证模块并移除未使用的组件和功能【0fed9472】(剩余 request、present)
parent
e65469b5ea
commit
c881a47ffd
|
@ -20,6 +20,17 @@ setupVbenVxeTable({
|
||||||
// 全局禁用vxe-table的表单配置,使用formOptions
|
// 全局禁用vxe-table的表单配置,使用formOptions
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
|
toolbarConfig: {
|
||||||
|
import: true,
|
||||||
|
export: true,
|
||||||
|
refresh: true,
|
||||||
|
print: true,
|
||||||
|
zoom: true,
|
||||||
|
custom: true,
|
||||||
|
},
|
||||||
|
customConfig: {
|
||||||
|
mode: 'modal',
|
||||||
|
},
|
||||||
proxyConfig: {
|
proxyConfig: {
|
||||||
autoLoad: true,
|
autoLoad: true,
|
||||||
response: {
|
response: {
|
||||||
|
@ -29,6 +40,12 @@ setupVbenVxeTable({
|
||||||
showActiveMsg: true,
|
showActiveMsg: true,
|
||||||
showResponseMsg: false,
|
showResponseMsg: false,
|
||||||
},
|
},
|
||||||
|
pagerConfig: {
|
||||||
|
enabled: true,
|
||||||
|
},
|
||||||
|
sortConfig: {
|
||||||
|
multiple: true,
|
||||||
|
},
|
||||||
round: true,
|
round: true,
|
||||||
showOverflow: true,
|
showOverflow: true,
|
||||||
size: 'small',
|
size: 'small',
|
||||||
|
|
|
@ -64,21 +64,21 @@ export async function logoutApi() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取权限信息 */
|
/** 获取权限信息 */
|
||||||
export function getAuthPermissionInfoApi() {
|
export async function getAuthPermissionInfoApi() {
|
||||||
return requestClient.get<AuthPermissionInfo>(
|
return requestClient.get<AuthPermissionInfo>(
|
||||||
'/system/auth/get-permission-info',
|
'/system/auth/get-permission-info',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取租户列表 */
|
/** 获取租户列表 */
|
||||||
export function getTenantSimpleList() {
|
export async function getTenantSimpleList() {
|
||||||
return requestClient.get<AuthApi.TenantResult[]>(
|
return requestClient.get<AuthApi.TenantResult[]>(
|
||||||
`/system/tenant/simple-list`,
|
`/system/tenant/simple-list`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 使用租户域名,获得租户信息 */
|
/** 使用租户域名,获得租户信息 */
|
||||||
export function getTenantByWebsite(website: string) {
|
export async function getTenantByWebsite(website: string) {
|
||||||
return requestClient.get<AuthApi.TenantResult>(`/system/tenant/get-by-website?website=${website}`);
|
return requestClient.get<AuthApi.TenantResult>(`/system/tenant/get-by-website?website=${website}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -125,10 +125,11 @@ watch(
|
||||||
<template>
|
<template>
|
||||||
<BasicLayout @clear-preferences-and-logout="handleLogout">
|
<BasicLayout @clear-preferences-and-logout="handleLogout">
|
||||||
<template #user-dropdown>
|
<template #user-dropdown>
|
||||||
|
<!-- TODO @芋艿:去掉 ann.vben@gmail.com -->
|
||||||
<UserDropdown
|
<UserDropdown
|
||||||
:avatar
|
:avatar
|
||||||
:menus
|
:menus
|
||||||
:text="userStore.userInfo?.realName"
|
:text="userStore.userInfo?.nickname"
|
||||||
description="ann.vben@gmail.com"
|
description="ann.vben@gmail.com"
|
||||||
tag-text="Pro"
|
tag-text="Pro"
|
||||||
@logout="handleLogout"
|
@logout="handleLogout"
|
||||||
|
|
|
@ -57,9 +57,9 @@ export const useAuthStore = defineStore('auth', () => {
|
||||||
: await router.push(userInfo.homePath || DEFAULT_HOME_PATH);
|
: await router.push(userInfo.homePath || DEFAULT_HOME_PATH);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userInfo?.realName) {
|
if (userInfo?.nickname) {
|
||||||
notification.success({
|
notification.success({
|
||||||
description: `${$t('authentication.loginSuccessDesc')}:${userInfo?.realName}`,
|
description: `${$t('authentication.loginSuccessDesc')}:${userInfo?.nickname}`,
|
||||||
duration: 3,
|
duration: 3,
|
||||||
message: $t('authentication.loginSuccess'),
|
message: $t('authentication.loginSuccess'),
|
||||||
});
|
});
|
||||||
|
@ -99,7 +99,7 @@ export const useAuthStore = defineStore('auth', () => {
|
||||||
let authPermissionInfo: AuthPermissionInfo | null = null;
|
let authPermissionInfo: AuthPermissionInfo | null = null;
|
||||||
authPermissionInfo = await getAuthPermissionInfoApi();
|
authPermissionInfo = await getAuthPermissionInfoApi();
|
||||||
// userStore
|
// userStore
|
||||||
userStore.setUserInfo(authPermissionInfo.user);
|
userStore.setUserInfo(authPermissionInfo.user); // TODO @芋艿:这里有报错
|
||||||
userStore.setUserRoles(authPermissionInfo.roles);
|
userStore.setUserRoles(authPermissionInfo.roles);
|
||||||
// accessStore
|
// accessStore
|
||||||
accessStore.setAccessMenus(authPermissionInfo.menus);
|
accessStore.setAccessMenus(authPermissionInfo.menus);
|
||||||
|
|
|
@ -15,7 +15,7 @@ interface BasicUserInfo {
|
||||||
/**
|
/**
|
||||||
* 用户昵称
|
* 用户昵称
|
||||||
*/
|
*/
|
||||||
realName: string;
|
nickname: string;
|
||||||
/**
|
/**
|
||||||
* 用户角色
|
* 用户角色
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -18,9 +18,10 @@ export function useAppConfig(
|
||||||
const { VITE_APP_CAPTCHA_ENABLE, VITE_APP_TENANT_ENABLE, VITE_GLOB_API_URL } =
|
const { VITE_APP_CAPTCHA_ENABLE, VITE_APP_TENANT_ENABLE, VITE_GLOB_API_URL } =
|
||||||
config;
|
config;
|
||||||
|
|
||||||
|
// TODO @芋艿:貌似 VITE_APP_CAPTCHA_ENABLE 读取的是字符串,所以这里暂时这么转换
|
||||||
return {
|
return {
|
||||||
apiURL: VITE_GLOB_API_URL,
|
apiURL: VITE_GLOB_API_URL,
|
||||||
captchaEnable: VITE_APP_CAPTCHA_ENABLE,
|
captchaEnable: VITE_APP_CAPTCHA_ENABLE === 'true',
|
||||||
tenantEnable: VITE_APP_TENANT_ENABLE,
|
tenantEnable: VITE_APP_TENANT_ENABLE === 'true',
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,11 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vben/locales": "workspace:*",
|
"@vben/locales": "workspace:*",
|
||||||
"@vben/utils": "workspace:*",
|
"@vben/utils": "workspace:*",
|
||||||
"axios": "catalog:"
|
"axios": "catalog:",
|
||||||
|
"qs": "catalog:"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"axios-mock-adapter": "catalog:"
|
"axios-mock-adapter": "catalog:",
|
||||||
|
"@types/qs": "catalog:"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import type { RequestClientConfig, RequestClientOptions } from './types';
|
||||||
import { bindMethods, merge } from '@vben/utils';
|
import { bindMethods, merge } from '@vben/utils';
|
||||||
|
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
import qs from 'qs';
|
||||||
|
|
||||||
import { FileDownloader } from './modules/downloader';
|
import { FileDownloader } from './modules/downloader';
|
||||||
import { InterceptorManager } from './modules/interceptor';
|
import { InterceptorManager } from './modules/interceptor';
|
||||||
|
@ -36,6 +37,10 @@ class RequestClient {
|
||||||
responseReturn: 'raw',
|
responseReturn: 'raw',
|
||||||
// 默认超时时间
|
// 默认超时时间
|
||||||
timeout: 10_000,
|
timeout: 10_000,
|
||||||
|
// 处理请求参数 默认使用 qs 库处理
|
||||||
|
paramsSerializer: (params) => {
|
||||||
|
return qs.stringify(params, { arrayFormat: 'repeat' });
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const { ...axiosConfig } = options;
|
const { ...axiosConfig } = options;
|
||||||
const requestConfig = merge(axiosConfig, defaultConfig);
|
const requestConfig = merge(axiosConfig, defaultConfig);
|
||||||
|
|
|
@ -52,12 +52,25 @@ interface HttpResponse<T = any> {
|
||||||
*/
|
*/
|
||||||
code: number;
|
code: number;
|
||||||
data: T;
|
data: T;
|
||||||
message: string;
|
msg: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PageParam {
|
||||||
|
[key: string]: any;
|
||||||
|
pageNo: number;
|
||||||
|
pageSize: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PageResult<T> {
|
||||||
|
list: T[];
|
||||||
|
total: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type {
|
export type {
|
||||||
HttpResponse,
|
HttpResponse,
|
||||||
MakeErrorMessageFn,
|
MakeErrorMessageFn,
|
||||||
|
PageParam,
|
||||||
|
PageResult,
|
||||||
RequestClientConfig,
|
RequestClientConfig,
|
||||||
RequestClientOptions,
|
RequestClientOptions,
|
||||||
RequestContentType,
|
RequestContentType,
|
||||||
|
|
|
@ -55,6 +55,7 @@ export const useUserStore = defineStore('core-user', {
|
||||||
userInfo: null,
|
userInfo: null,
|
||||||
userRoles: [],
|
userRoles: [],
|
||||||
}),
|
}),
|
||||||
|
// TODO @芋艿:pick: ['userInfo', 'userRoles'], 是否要持久化
|
||||||
});
|
});
|
||||||
|
|
||||||
// 解决热更新问题
|
// 解决热更新问题
|
||||||
|
|
|
@ -111,6 +111,9 @@ catalogs:
|
||||||
'@types/qrcode':
|
'@types/qrcode':
|
||||||
specifier: ^1.5.5
|
specifier: ^1.5.5
|
||||||
version: 1.5.5
|
version: 1.5.5
|
||||||
|
'@types/qs':
|
||||||
|
specifier: ^6.9.17
|
||||||
|
version: 6.9.18
|
||||||
'@types/sortablejs':
|
'@types/sortablejs':
|
||||||
specifier: ^1.15.8
|
specifier: ^1.15.8
|
||||||
version: 1.15.8
|
version: 1.15.8
|
||||||
|
@ -369,6 +372,9 @@ catalogs:
|
||||||
qrcode:
|
qrcode:
|
||||||
specifier: ^1.5.4
|
specifier: ^1.5.4
|
||||||
version: 1.5.4
|
version: 1.5.4
|
||||||
|
qs:
|
||||||
|
specifier: ^6.13.1
|
||||||
|
version: 6.14.0
|
||||||
radix-vue:
|
radix-vue:
|
||||||
specifier: ^1.9.17
|
specifier: ^1.9.17
|
||||||
version: 1.9.17
|
version: 1.9.17
|
||||||
|
@ -1714,7 +1720,13 @@ importers:
|
||||||
axios:
|
axios:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 1.8.2
|
version: 1.8.2
|
||||||
|
qs:
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 6.14.0
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@types/qs':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 6.9.18
|
||||||
axios-mock-adapter:
|
axios-mock-adapter:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 2.1.0(axios@1.8.2)
|
version: 2.1.0(axios@1.8.2)
|
||||||
|
@ -4331,6 +4343,9 @@ packages:
|
||||||
'@types/qrcode@1.5.5':
|
'@types/qrcode@1.5.5':
|
||||||
resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==}
|
resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==}
|
||||||
|
|
||||||
|
'@types/qs@6.9.18':
|
||||||
|
resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==}
|
||||||
|
|
||||||
'@types/readdir-glob@1.1.5':
|
'@types/readdir-glob@1.1.5':
|
||||||
resolution: {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==}
|
resolution: {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==}
|
||||||
|
|
||||||
|
@ -8650,6 +8665,10 @@ packages:
|
||||||
engines: {node: '>=10.13.0'}
|
engines: {node: '>=10.13.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
qs@6.14.0:
|
||||||
|
resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
|
||||||
|
engines: {node: '>=0.6'}
|
||||||
|
|
||||||
quansync@0.2.8:
|
quansync@0.2.8:
|
||||||
resolution: {integrity: sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==}
|
resolution: {integrity: sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==}
|
||||||
|
|
||||||
|
@ -13160,6 +13179,8 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.13.10
|
'@types/node': 22.13.10
|
||||||
|
|
||||||
|
'@types/qs@6.9.18': {}
|
||||||
|
|
||||||
'@types/readdir-glob@1.1.5':
|
'@types/readdir-glob@1.1.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.13.10
|
'@types/node': 22.13.10
|
||||||
|
@ -17949,6 +17970,10 @@ snapshots:
|
||||||
pngjs: 5.0.0
|
pngjs: 5.0.0
|
||||||
yargs: 15.4.1
|
yargs: 15.4.1
|
||||||
|
|
||||||
|
qs@6.14.0:
|
||||||
|
dependencies:
|
||||||
|
side-channel: 1.1.0
|
||||||
|
|
||||||
quansync@0.2.8: {}
|
quansync@0.2.8: {}
|
||||||
|
|
||||||
queue-microtask@1.2.3: {}
|
queue-microtask@1.2.3: {}
|
||||||
|
|
|
@ -49,6 +49,7 @@ catalog:
|
||||||
'@types/nprogress': ^0.2.3
|
'@types/nprogress': ^0.2.3
|
||||||
'@types/postcss-import': ^14.0.3
|
'@types/postcss-import': ^14.0.3
|
||||||
'@types/qrcode': ^1.5.5
|
'@types/qrcode': ^1.5.5
|
||||||
|
'@types/qs': ^6.9.17
|
||||||
'@types/sortablejs': ^1.15.8
|
'@types/sortablejs': ^1.15.8
|
||||||
'@types/crypto-js': ^4.2.2
|
'@types/crypto-js': ^4.2.2
|
||||||
'@typescript-eslint/eslint-plugin': ^8.26.0
|
'@typescript-eslint/eslint-plugin': ^8.26.0
|
||||||
|
@ -139,6 +140,7 @@ catalog:
|
||||||
prettier-plugin-tailwindcss: ^0.6.11
|
prettier-plugin-tailwindcss: ^0.6.11
|
||||||
publint: ^0.2.12
|
publint: ^0.2.12
|
||||||
qrcode: ^1.5.4
|
qrcode: ^1.5.4
|
||||||
|
qs: ^6.13.1
|
||||||
radix-vue: ^1.9.17
|
radix-vue: ^1.9.17
|
||||||
resolve.exports: ^2.0.3
|
resolve.exports: ^2.0.3
|
||||||
rimraf: ^6.0.1
|
rimraf: ^6.0.1
|
||||||
|
|
Loading…
Reference in New Issue