feat(access): 实现基于用户角色的路由权限控制
添加权限检查功能,包括用户角色定义、路由元信息扩展和权限验证逻辑 重构路由配置和用户存储,支持动态菜单过滤 更新构建配置以支持类型声明生成
This commit is contained in:
37
src/access/checkAccess.ts
Normal file
37
src/access/checkAccess.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import type { LoginUesr } from "../store/types";
|
||||
import ACCESS_ENUM from "./accessEnum";
|
||||
|
||||
/**
|
||||
* 检查当前用户是否拥有权限
|
||||
* @param loginUser 登录的用户信息
|
||||
* @param needAccess 需要的权限
|
||||
* @returns {boolean}
|
||||
*/
|
||||
const checkAccess = (
|
||||
loginUser: LoginUesr,
|
||||
needAccess = ACCESS_ENUM.NOT_LOGIN
|
||||
): boolean => {
|
||||
// 获取当前登录用户具有的权限
|
||||
const loginUserAccess = loginUser?.userRole ?? ACCESS_ENUM.NOT_LOGIN;
|
||||
// 对比权限是否足够
|
||||
// 如果需要的权限是随便是个人都能访问
|
||||
if (needAccess === ACCESS_ENUM.NOT_LOGIN) {
|
||||
return true;
|
||||
}
|
||||
// 如果用户登录才能访问
|
||||
if (needAccess === ACCESS_ENUM.USER) {
|
||||
if (loginUserAccess !== ACCESS_ENUM.NOT_LOGIN) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// 如果需要管理员权限
|
||||
if (needAccess === ACCESS_ENUM.ADMIN) {
|
||||
// 如果不为管理员
|
||||
if (loginUserAccess !== ACCESS_ENUM.ADMIN) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// 如果说啥都不符合,那还说啥了,直接拒了
|
||||
return false;
|
||||
};
|
||||
export default checkAccess;
|
||||
6
src/access/index.ts
Normal file
6
src/access/index.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import router from "../router/router";
|
||||
import { useUserStore } from "../store/user";
|
||||
import ACCESS_ENUM from "./accessEnum";
|
||||
import checkAccess from "./checkAccess";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user