}
# | En sesión | Requeridos | Exactos | Puede acceder | Notas |
---|
Esta es una app de pruebas de acceso a usuarios con multiples roles, almacenando estos en binario
Aquí mostramos el caso para 4 roles (A, B, C, D) cada uno con su respectivo valor (8, 4, 2, 1), lo que nos supone un binario de 4 bits, pero se pueden utilizar la cantidad de roles que se desee.
Por ejemplo si un usuario solo tiene los roles A y C, suman 11, el binario correspondiente seria 1010.
const sessionRoles = '0101';
const requiredRoles = '___1';
const exact = false;
const A = requiredRoles.charAt(0) === '_' ? sessionRoles.charAt(0) : requiredRoles.charAt(0);
const B = requiredRoles.charAt(1) === '_' ? sessionRoles.charAt(1) : requiredRoles.charAt(1);
const C = requiredRoles.charAt(2) === '_' ? sessionRoles.charAt(2) : requiredRoles.charAt(2);
const D = requiredRoles.charAt(3) === '_' ? sessionRoles.charAt(3) : requiredRoles.charAt(3);
const rolesFix = `${A}${B}${C}${D}`;
const access = exact ? (rolesFix === sessionRoles) :
((sessionRoles.charAt(0) === requiredRoles.charAt(0)) ||
(sessionRoles.charAt(1) === requiredRoles.charAt(1)) ||
(sessionRoles.charAt(2) === requiredRoles.charAt(2)) ||
(sessionRoles.charAt(3) === requiredRoles.charAt(3)));