DROP FUNCTION IF EXISTS account.user_hasRoleId; DELIMITER $$ CREATE DEFINER=`root`@`%` FUNCTION `account`.`user_hasRoleId`(vUser VARCHAR(255), vRoleId INT) RETURNS tinyint(1) DETERMINISTIC BEGIN /** * Checks if user has/inherits a role. * * @param vUserName The user name * @param vRoleId Role id to check * @return %TRUE if it has role, %FALSE otherwise */ DECLARE vHasRole BOOL DEFAULT FALSE; SELECT COUNT(*) > 0 INTO vHasRole FROM user u JOIN roleRole rr ON rr.role = u.role JOIN role r ON r.id = rr.inheritsFrom WHERE u.`name` = vUser AND r.id = vRoleId; RETURN vHasRole; END$$ DELIMITER ;