salix/services/db/changes/1.0.0/05-userHasRoleId.sql

32 lines
729 B
SQL

DROP function IF EXISTS `userHasRoleId`;
DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `account`.`userHasRoleId`(vRoleId INT) RETURNS tinyint(1)
DETERMINISTIC
BEGIN
/**
* Comprueba si el usuario actual tiene asociado un rol.
*
* @param vRoleId Identificador del rol a comprobar
* @return %TRUE si tiene el rol, %FALSE en caso contrario
*/
DECLARE vHasRole BOOL DEFAULT FALSE;
SELECT COUNT(*) > 0 INTO vHasRole
FROM user u
JOIN roleRole r ON r.role = u.role
WHERE u.id = userGetId()
AND r.inheritsFrom = vRoleId;
IF NOT vHasRole
THEN
SELECT COUNT(*) > 0 INTO vHasRole
FROM userRole
WHERE userFk = userGetId()
AND roleFk = vRoleId;
END IF;
RETURN vHasRole;
END$$
DELIMITER ;