@nangazaki/vue-rbac
Version:
Role-Based Access Control (RBAC) implementation for Vue.js
33 lines (32 loc) • 1.14 kB
TypeScript
import type { RBACConfig } from "./config.types";
import type { Permission, RoleKey, RolesConfig } from "./roles.types";
import type { LogLevel } from "./utils.types";
export interface RBACState {
roles: RolesConfig;
userRoles: RoleKey[];
isLoading: boolean;
isInitialized: boolean;
}
export interface VueRBACPluginOptions {
config?: Partial<RBACConfig>;
logLevel?: LogLevel;
}
export interface RBAC {
options: Required<RBACConfig>;
state: RBACState;
init(): Promise<RolesConfig>;
fetchRolesAndPermissions(): Promise<RolesConfig>;
setUserRoles(roles: RoleKey | RoleKey[]): void;
hasPermission(permission: Permission): boolean;
hasRole(role: RoleKey): boolean;
hasAnyPermission(permissions: Permission[]): boolean;
hasAllPermissions(permissions: Permission[]): boolean;
}
export interface IUseRBAC {
state: RBACState;
setUserRoles(roles: RoleKey | RoleKey[]): void;
hasRole(role: RoleKey): boolean;
hasPermission(permission: Permission): boolean;
hasAnyPermission(permissions: Permission[]): boolean;
hasAllPermissions(permissions: Permission[]): boolean;
}