30 lines
1.1 KiB
JavaScript
30 lines
1.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.Role = void 0;
|
|
const ValueObject_1 = require("../../../../shared/domain/ValueObject");
|
|
class Role extends ValueObject_1.ValueObject {
|
|
static create(value) {
|
|
if (!Role.VALID_ROLES.includes(value)) {
|
|
throw new Error(`Invalid role: ${value}. Must be one of: ${Role.VALID_ROLES.join(', ')}`);
|
|
}
|
|
return new Role({ value: value });
|
|
}
|
|
static owner() { return new Role({ value: 'owner' }); }
|
|
static admin() { return new Role({ value: 'admin' }); }
|
|
static member() { return new Role({ value: 'member' }); }
|
|
static viewer() { return new Role({ value: 'viewer' }); }
|
|
get value() {
|
|
return this.props.value;
|
|
}
|
|
isOwner() { return this.props.value === 'owner'; }
|
|
isAdmin() { return this.props.value === 'admin'; }
|
|
isMember() { return this.props.value === 'member'; }
|
|
isViewer() { return this.props.value === 'viewer'; }
|
|
}
|
|
exports.Role = Role;
|
|
Role.OWNER = 'owner';
|
|
Role.ADMIN = 'admin';
|
|
Role.MEMBER = 'member';
|
|
Role.VIEWER = 'viewer';
|
|
Role.VALID_ROLES = ['owner', 'admin', 'member', 'viewer'];
|