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 ;