32 lines
729 B
MySQL
32 lines
729 B
MySQL
|
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 ;
|
||
|
|