fase(9): auth module with casl rbac and session management
This commit is contained in:
29
dist/modules/auth/domain/value-objects/Role.js
vendored
Normal file
29
dist/modules/auth/domain/value-objects/Role.js
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
"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'];
|
||||
Reference in New Issue
Block a user