katanakit-js / AccessService
Class: AccessService
Defined in: src/core/services/access.service.ts:272
AccessService - Singleton facade con Strategy Pattern.
Centraliza el control de acceso (roles y capacidades) delegando el algoritmo concreto en una IAccessStrategy intercambiable. Por defecto usa HierarchicalAccessStrategy.
Example
// Uso con la estrategia por defecto (jerárquica)
AccessService.getInstance().useCan({ id: 1, roles: ["admin"] }, "members:manage");
// Cambiar a estrategia plana en runtime
AccessService.getInstance().useSetStrategy(new FlatAccessStrategy());Methods
useCan()
useCan(subject, capability): boolean;Defined in: src/core/services/access.service.ts:358
Whether the subject may perform a capability (delegado a la estrategia activa).
Parameters
| Parameter | Type |
|---|---|
subject | { [key: string]: unknown; id: string | number; roles: string[]; } |
subject.id | string | number |
subject.roles | string[] |
capability | string |
Returns
boolean
useCapabilitiesFor()
useCapabilitiesFor(role): string[];Defined in: src/core/services/access.service.ts:329
Effective capabilities of a role (delegado a la estrategia activa).
Parameters
| Parameter | Type |
|---|---|
role | string |
Returns
string[]
useGetStrategy()
useGetStrategy(): IAccessStrategy;Defined in: src/core/services/access.service.ts:322
Returns the currently active strategy.
Returns
useHasRole()
useHasRole(subject, role): boolean;Defined in: src/core/services/access.service.ts:351
Exact role membership - no hierarchy involved.
Parameters
| Parameter | Type |
|---|---|
subject | { [key: string]: unknown; id: string | number; roles: string[]; } |
subject.id | string | number |
subject.roles | string[] |
role | string |
Returns
boolean
useRegisterRole()
useRegisterRole(definition): void;Defined in: src/core/services/access.service.ts:336
Registers (or replaces) a role definition (delegado a la estrategia activa).
Parameters
| Parameter | Type |
|---|---|
definition | { capabilities: string[]; label: string; rank: number; slug: string; } |
definition.capabilities | string[] |
definition.label | string |
definition.rank | number |
definition.slug | string |
Returns
void
useResetRoles()
useResetRoles(): void;Defined in: src/core/services/access.service.ts:341
Restores the built-in role registry (delegado a la estrategia activa).
Returns
void
useRoles()
useRoles(): {
capabilities: string[];
label: string;
rank: number;
slug: string;
}[];Defined in: src/core/services/access.service.ts:346
Lists every registered role definition (delegado a la estrategia activa).
Returns
{ capabilities: string[]; label: string; rank: number; slug: string; }[]
useSetStrategy()
useSetStrategy(strategy): void;Defined in: src/core/services/access.service.ts:317
Intercambia la estrategia de acceso en runtime (Strategy Pattern).
Parameters
| Parameter | Type | Description |
|---|---|---|
strategy | IAccessStrategy | La nueva estrategia a utilizar. |
Returns
void
create()
static create(strategy?): AccessService;Defined in: src/core/services/access.service.ts:308
Crea una instancia NO-singleton con una estrategia específica. Útil para tests o para aislar varios contextos de acceso.
Parameters
| Parameter | Type | Description |
|---|---|---|
strategy? | IAccessStrategy | Estrategia a inyectar. |
Returns
AccessService
Una nueva instancia de AccessService.
Example
const flatAccess = AccessService.create(new FlatAccessStrategy());getInstance()
static getInstance(): AccessService;Defined in: src/core/services/access.service.ts:289
Obtiene la instancia única del AccessService (Singleton).
Returns
AccessService
La instancia única de AccessService.