0.1.5Updated 6 months ago
export interface DracoUser extends Draco.UserInterface {}
export class DracoUser implements Draco.User {
  constructor(params: Draco.UserInterface) {
    this.id = params.id;
    this.name = params.name;
    this.surname = params.surname;
    this.email = params.email;
    this.image_path = params.image_path;
    this.permissions = params.permissions;
  }

  get names() {
    return `${this.name} ${this.surname}`;
  }

  get is_admin() {
    return this.permissions.includes('*');
  }

  has_permission(permission: string) {
    return this.is_admin || this.permissions.includes(permission);
  }

  has_one_permission_of(...permissions: string[]) {
    return this.is_admin || permissions.some(permission => this.permissions.includes(permission));
  }

  has_all_permission_of(...permissions: string[]) {
    return this.is_admin || permissions.every(permission => this.permissions.includes(permission));
  }
}