mirror of
https://github.com/vbenjs/vue-vben-admin.git
synced 2025-08-27 09:50:05 +08:00
refactor: refactor store
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import type { RouteRecordRaw } from 'vue-router';
|
||||
|
||||
import { appStore } from '/@/store/modules/app';
|
||||
import { permissionStore } from '/@/store/modules/permission';
|
||||
import { userStore } from '/@/store/modules/user';
|
||||
import { useAppStore } from '/@/store/modules/app';
|
||||
import { usePermissionStore } from '/@/store/modules/permission';
|
||||
import { useUserStore } from '/@/store/modules/user';
|
||||
|
||||
import { useTabs } from './useTabs';
|
||||
|
||||
@@ -15,15 +15,20 @@ import { RoleEnum } from '/@/enums/roleEnum';
|
||||
|
||||
import { intersection } from 'lodash-es';
|
||||
import { isArray } from '/@/utils/is';
|
||||
import { tabStore } from '/@/store/modules/tab';
|
||||
import { useMultipleTabStore } from '/@/store/modules/multipleTab';
|
||||
|
||||
// User permissions related operations
|
||||
export function usePermission() {
|
||||
const userStore = useUserStore();
|
||||
const appStore = useAppStore();
|
||||
const permissionStore = usePermissionStore();
|
||||
const { closeAll } = useTabs(router);
|
||||
|
||||
/**
|
||||
* Change permission mode
|
||||
*/
|
||||
async function togglePermissionMode() {
|
||||
appStore.commitProjectConfigState({
|
||||
appStore.setProjectConfig({
|
||||
permissionMode:
|
||||
projectSetting.permissionMode === PermissionModeEnum.BACK
|
||||
? PermissionModeEnum.ROLE
|
||||
@@ -37,14 +42,14 @@ export function usePermission() {
|
||||
* @param id
|
||||
*/
|
||||
async function resume(id?: string | number) {
|
||||
tabStore.commitClearCache();
|
||||
const tabStore = useMultipleTabStore();
|
||||
tabStore.clearCacheTabs();
|
||||
resetRouter();
|
||||
const routes = await permissionStore.buildRoutesAction(id);
|
||||
routes.forEach((route) => {
|
||||
router.addRoute((route as unknown) as RouteRecordRaw);
|
||||
});
|
||||
permissionStore.commitLastBuildMenuTimeState();
|
||||
const { closeAll } = useTabs();
|
||||
permissionStore.setLastBuildMenuTime();
|
||||
closeAll();
|
||||
}
|
||||
|
||||
@@ -53,22 +58,24 @@ export function usePermission() {
|
||||
*/
|
||||
function hasPermission(value?: RoleEnum | RoleEnum[] | string | string[], def = true): boolean {
|
||||
const permMode = projectSetting.permissionMode;
|
||||
|
||||
if (PermissionModeEnum.ROLE === permMode) {
|
||||
// Visible by default
|
||||
if (!value) {
|
||||
return def;
|
||||
}
|
||||
if (!isArray(value)) {
|
||||
return userStore.getRoleListState?.includes(value as RoleEnum);
|
||||
return userStore.getRoleList?.includes(value as RoleEnum);
|
||||
}
|
||||
return (intersection(value, userStore.getRoleListState) as RoleEnum[]).length > 0;
|
||||
return (intersection(value, userStore.getRoleList) as RoleEnum[]).length > 0;
|
||||
}
|
||||
|
||||
if (PermissionModeEnum.BACK === permMode) {
|
||||
// Visible by default
|
||||
if (!value) {
|
||||
return def;
|
||||
}
|
||||
const allCodeList = permissionStore.getPermCodeListState;
|
||||
const allCodeList = permissionStore.getPermCodeList;
|
||||
if (!isArray(value)) {
|
||||
return allCodeList.includes(value as string);
|
||||
}
|
||||
@@ -90,7 +97,7 @@ export function usePermission() {
|
||||
if (!isArray(roles)) {
|
||||
roles = [roles];
|
||||
}
|
||||
userStore.commitRoleListState(roles);
|
||||
userStore.setRoleList(roles);
|
||||
await resume();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user