@hemia/access-sdk
v0.0.1
Published
SDK para gestión de permisos y roles en aplicaciones Vue 3 + Pinia. Soporte para directivas, evaluaciones dinámicas y módulos.
Downloads
6
Readme
@hemia/access-sdk
Sistema modular de control de permisos para aplicaciones multiusuario con soporte a roles globales y por sistema. Diseñado para integrarse fácilmente con Vue.js y proporcionar tanto funciones como directivas para gestionar acceso dinámico a funcionalidades UI y lógica de negocio.
Instalación
npm install @hemia/access-sdkCaracterísticas
- Evaluación de permisos por tipo y acción.
- Soporte para roles globales y roles específicos por sistema.
- Directiva Vue para mostrar/ocultar elementos según permisos.
- Utilidades reactivas para verificación de acceso.
- Lógica condicional con
anyOfyallOf.
Uso básico
import { useAccess } from '@hemia/access-sdk';
const access = useAccess();
if (access.hasPermission('document', 'read')) {
// mostrar algo
}Verificación de Permisos
hasPermission(user, type, action, system?)
Verifica si un usuario tiene permisos para un tipo y acción.
canAnyOf(user, checks, system?)
Retorna true si el usuario cumple al menos uno de los permisos dados.
canAllOf(user, checks, system?)
Retorna true si el usuario cumple todos los permisos dados.
Ejemplo:
canAnyOf(user, [
{ type: 'document', action: 'edit' },
{ type: 'comment', action: 'create' }
]);Directiva Vue: v-access
<button v-access="{ type: 'user', action: 'delete' }">
Eliminar usuario
</button>Soporta estructuras complejas:
<div v-access="{ anyOf: [ { type: 'user', action: 'edit' }, { type: 'admin', action: 'impersonate' } ] }">
Opciones avanzadas
</div>API useAccess()
Función que proporciona métodos reactivos de acceso y control:
const access = useAccess();
access.hasPermission('user', 'create');
access.canAnyOf([{ type: 'client', action: 'view' }]);
access.clear();
await access.loadIfMissing({ endpoint: '/auth/context', ttlContext: 60000 });Tipos
type SingleCheck = {
type: PermissionType;
action: ActionType;
module?: ModuleType;
};
// Composición lógica:
type AccessBinding =
| SingleCheck
| { anyOf: SingleCheck[] }
| { allOf: SingleCheck[] };Requisitos
- Estructura
UserContextconglobalRolesysystemScopedRoles. - Implementación de
loadAccessContext(config)para cargar el contexto del usuario.
Licencia
MIT
