@udt_pro
Web developer

Определение типа пользователя в программе. Какую структуру БД выбрать?

Здраствуйте. Есть программа с единой точкой входа, АРМ. Существует древовидная структура доступа к функционалу. Допустим, администратор может создавать пользователей, пользователи могут производить записи в БД, но не могут создавать других пользователей.
Первый подход. Создается таблица администраторов и таблицы пользователей(разные виды). При вводе связки логин/пароль ищется совпадения в разных таблицах и выдается тип пользователя в зависимости в какой таблице совпало. Недостаток, если пользователь состоит в нескольких группах.
Второй. Хранить все в одной таблице, с полем привилегий, если несколько привилегий, предложить выбрать под какой заходить.
Какой метод лучше выбрать или отказаться и придумать еще?:(
Большое спасибо.
  • Вопрос задан
  • 248 просмотров
Пригласить эксперта
Ответы на вопрос 3
должнa быть таблица групп и таблица юзеров (+их связь) , одна из групп - админы
Мнение школьника.
Ответ написан
@1Moze
Выбрать первый вариант и сделать проверку при входе (напишу на ломаном делфи, ибо не знаю на каком языке вы пишите)

var
user:string; // создаём переменную типа string

...
begin
user:=username; //тут парсим никнейм и присваиваем к переменной
if user=table1 then begin //если нашли пользователя в первой таблице, тогда..
  if user=table2 then begin //тогда проверяем есть ли он во второй таблице..
    showmessage('Ты куда зайти хочешь, алло?'); // Спрашиваем у пользователя под какимими правами ему войти
 end else begin // Если не находим то..
 ... // входим как пользователь первой таблицы
end;
end else begin // Тут проверяем в случае того, если не нашли пользователя в первой таблице
 if user=table2 then begin // ну тут понятно
 ...// входим как пользователь второй таблицы
 end else begin // А если и во второй не нашли то..
  showmessage('Регистрироваться я за тебя должен, или как?');
end;
end;
Ответ написан
@novrm
Таблица с ролями 'role':
id | parent_id | role
--+------------+--------
1 | NULL | quest
2 | 1 | user
3 | 2 | admin
--+------------+--------

Таблица соответствия роли к пользователю 'user_role_linker':
---------+--------
user_id | role_id
---------+--------

Примеры:
https://github.com/bjyoungblood/BjyAuthorize
https://github.com/ZF-Commons/zfc-rbac/tree/master/docs
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы