Some checks failed
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Lint (ubuntu-latest) (push) Has been cancelled
CI / Lint (windows-latest) (push) Has been cancelled
CI / Check (ubuntu-latest) (push) Has been cancelled
CI / Check (windows-latest) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Website on push / Deploy Push Playground Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Docs Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Antd Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Element Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Naive Ftp (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
CI / CI OK (push) Has been cancelled
Deploy Website on push / Rerun on failure (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Issue Close Require / close-issues (push) Has been cancelled
Close stale issues / stale (push) Has been cancelled
54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import { computed } from 'vue';
|
||
|
||
import { preferences, updatePreferences } from '@vben/preferences';
|
||
import { useAccessStore, useUserStore } from '@vben/stores';
|
||
|
||
function useAccess() {
|
||
const accessStore = useAccessStore();
|
||
const userStore = useUserStore();
|
||
const accessMode = computed(() => {
|
||
return preferences.app.accessMode;
|
||
});
|
||
|
||
/**
|
||
* 基于角色判断是否有权限
|
||
* @description: Determine whether there is permission,The role is judged by the user's role
|
||
* @param roles
|
||
*/
|
||
function hasAccessByRoles(roles: string[]) {
|
||
const userRoleSet = new Set(userStore.userRoles);
|
||
const intersection = roles.filter((item) => userRoleSet.has(item));
|
||
return intersection.length > 0;
|
||
}
|
||
|
||
/**
|
||
* 基于权限码判断是否有权限
|
||
* @description: Determine whether there is permission,The permission code is judged by the user's permission code
|
||
* @param codes
|
||
*/
|
||
function hasAccessByCodes(codes: string[]) {
|
||
const userCodesSet = new Set(accessStore.accessCodes);
|
||
|
||
const intersection = codes.filter((item) => userCodesSet.has(item));
|
||
return intersection.length > 0;
|
||
}
|
||
|
||
async function toggleAccessMode() {
|
||
updatePreferences({
|
||
app: {
|
||
accessMode:
|
||
preferences.app.accessMode === 'frontend' ? 'backend' : 'frontend',
|
||
},
|
||
});
|
||
}
|
||
|
||
return {
|
||
accessMode,
|
||
hasAccessByCodes,
|
||
hasAccessByRoles,
|
||
toggleAccessMode,
|
||
};
|
||
}
|
||
|
||
export { useAccess };
|