写一个权限管理oa代码
时间: 2024-04-29 20:22:20 浏览: 8
以下是一个简单的权限管理OA代码示例,你可以根据自己的需求进行修改和扩展。
```
// 用户类
class User {
constructor(name, role) {
this.name = name;
this.role = role;
}
}
// 角色类
class Role {
constructor(name, permissions) {
this.name = name;
this.permissions = permissions;
}
}
// 权限类
class Permission {
constructor(name) {
this.name = name;
}
}
// OA系统
class OASystem {
constructor() {
this.users = [];
this.roles = [];
this.permissions = [];
}
// 添加用户
addUser(name, roleName) {
const role = this.roles.find(role => role.name === roleName);
if (!role) {
throw new Error(`Role ${roleName} does not exist.`);
}
const user = new User(name, role);
this.users.push(user);
console.log(`User ${name} has been added.`);
}
// 添加角色
addRole(name, permissionNames) {
const permissions = permissionNames.map(name => {
const permission = this.permissions.find(permission => permission.name === name);
if (!permission) {
throw new Error(`Permission ${name} does not exist.`);
}
return permission;
});
const role = new Role(name, permissions);
this.roles.push(role);
console.log(`Role ${name} has been added.`);
}
// 添加权限
addPermission(name) {
const permission = new Permission(name);
this.permissions.push(permission);
console.log(`Permission ${name} has been added.`);
}
// 用户是否有权限
hasPermission(userName, permissionName) {
const user = this.users.find(user => user.name === userName);
if (!user) {
throw new Error(`User ${userName} does not exist.`);
}
const permission = this.permissions.find(permission => permission.name === permissionName);
if (!permission) {
throw new Error(`Permission ${permissionName} does not exist.`);
}
return user.role.permissions.includes(permission);
}
}
// 使用示例
const oaSystem = new OASystem();
oaSystem.addPermission('create');
oaSystem.addPermission('read');
oaSystem.addPermission('update');
oaSystem.addPermission('delete');
oaSystem.addRole('admin', ['create', 'read', 'update', 'delete']);
oaSystem.addRole('user', ['read']);
oaSystem.addUser('Alice', 'admin');
oaSystem.addUser('Bob', 'user');
console.log(oaSystem.hasPermission('Alice', 'create')); // true
console.log(oaSystem.hasPermission('Bob', 'create')); // false
```