Teamlinker/code/common/permission/permission.ts
sx1989827 9155cdf730 fix
2023-07-28 10:19:41 +08:00

54 lines
2.4 KiB
TypeScript

export function getAllPermissions(obj):Permission_Base[] {
let arr:Permission_Base[] =[]
let keys = Object.keys(obj)
for (let key of keys) {
let val = obj[key]
if (val instanceof Permission_Base) {
arr.push(val)
}
}
return arr;
}
export function checkPermission(permission:number,permissionChecked:Permission_Base) {
return (permission & permissionChecked.value) && permission>=permissionChecked.value
}
export class Permission_Base {
constructor(public readonly name:string,public readonly description=name,public readonly value){}
toString() {
return this.name;
}
}
export namespace Permission_Types {
export class Organization extends Permission_Base {
static readonly ADMIN =new Organization("ADMIN","admin",2**31-1)
static readonly CREATE_PROJECT =new Organization("create project","create project",2**30)
static readonly CREATE_TEAM =new Organization("create team","create team",2**29)
static readonly READ =new Organization("read organization","read organization",2**28)
static readonly EDIT =new Organization("edit organization","edit organization",2**27)
static readonly CREATE_WIKI =new Organization("create wiki","create wiki",2**26)
}
export class Common extends Permission_Base {
static readonly SELF=new Common("SELF","self",2**2)
}
export class Project extends Permission_Base {
static readonly ADMIN =new Project("ADMIN","admin",(2**(8-2)-1<<3))
static readonly READ =new Project("READ","read project",2**8)
static readonly EDIT =new Project("EDIT","edit project",2**7)
static readonly DELETE =new Project("DELETE","delete project",2**6)
static readonly CREATE =new Project("CREATE","create project",2**5)
}
export class Team extends Permission_Base {
static readonly ADMIN =new Team("ADMIN","admin",(2**(15-8)-1<<9))
static readonly READ =new Team("READ","read team",2**15)
static readonly EDIT =new Team("EDIT","edit team",2**14)
static readonly DELETE =new Team("DELETE","delete team",2**13)
}
export class Wiki extends Permission_Base {
static readonly ADMIN =new Wiki("ADMIN","admin",(2**(19-15)-1<<16))
static readonly READ =new Wiki("READ","read wiki",2**19)
static readonly EDIT =new Wiki("EDIT","edit wiki",2**18)
}
}