0.1.3•Updated 10 days ago
export interface User extends Draco.User {}
export class User {
constructor(params: Draco.User) {
this.id = params.id;
this.name = params.name;
this.surname = params.surname;
this.email = params.email;
this.permissions = params.permissions;
this.image_path = params.image_path;
}
get is_super_admin() {
return this.permissions.includes('*') || false;
}
can(permission: string) {
if(!this) return false;
if(this.is_super_admin) return true;
return this.permissions.includes(permission);
}
has_permission(permission: string) {
if(!this) return false;
if(this.is_super_admin) return true;
return this.permissions.includes(permission);
}
has_one_permission_of(...permissions: string[]) {
if(!this) return false;
if(this.is_super_admin) return true;
return permissions.some(permission => this!.permissions.includes(permission));
}
has_all_permission_of(...permissions: string[]) {
if(!this) return false;
if(this.is_super_admin) return true;
return permissions.every(permission => this!.permissions.includes(permission));
}
}