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 ;

