Напишем простейшую функцию, которая позволит входить по ролям на уровне базы.
Допустим у нас есть таблицы
Следующая функция позволит осуществлять вход по ролям. На выходе мы получим название роли. И в клиенте можем загружать тот или иной кабинет.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
CREATE DEFINER=`root`@`localhost` FUNCTION `getUserRole`(luser_name VARCHAR(45),lpassword VARCHAR(45)) RETURNS varchar(45) CHARSET utf8 BEGIN -- defining local vars DECLARE aid_user INT; DECLARE roleName VARCHAR(45); DECLARE apassword VARCHAR(45) default 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET aid_user = 0; -- selecting for login and md5 password select id,password into aid_user,apassword from users where login=luser_name and password=md5(lpassword); -- check number of selected rows SELECT FOUND_ROWS() as num_of_rows_found into @RowCount; if @RowCount=0 then begin set aid_user = 0; set roleName='wrong login or password';end; else begin select name into roleName from roles where id=aid_user; end; end if; -- if md5(lpassword)<>apassword then set aid_user = 0; end if; -- if lpassword<>apassword then set aid_user = 0; end if; RETURN roleName; END |
Тестируем