Как лучше сделать роли пользователей в БД?

В системе есть 2 раздела - условно назовём их первый и второй.

Есть пользователи которые будут иметь доступ только к первому
Есть пользователи которые будут иметь доступ только ко второму
Есть пользователи которые будут иметь доступ сразу к обоим
Есть СУПЕРпользователи которые создают остальных и дают им доступ

Первый вариант создать одну колонку в БД - роль. Варианты: one, two, double, super - доступ к первому разделу, второму, обоим, супер - админы

Второй вариант: на каждый раздел завести по колонке в БД и у каждого пользователя ставить 0 или 1 в зависимости от того имеет он туда доступ или нет.

Сегодня раздела 2, а завтра 5 и тогда первый вариант сразу посыпется, т.к. количество комбинаций слов станет слишком большим. Может ещё варианты которые я не учёл типа кода 12345 в одном поле? Задача что бы потом при добавлении раздела как можно меньше кода переписывать.
  • Вопрос задан
  • 468 просмотров
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Дерево зависимостей: USER => Роль (Role/"User type") => Права доступа (ACL)

Создадим 2 колонки в таблице аккаунтов: Role и ACL.

1. Role в таблице аккаунта (на основе битовой маски / набор на основе степеней "2"-ки):
0 - public
1 - guest
2 - user
4 - editor
8 - ...
65536 - SUPER USER / SUPER ADMIN

2. ACL в таблице аккаунта (на основе битовой маски / набор на основе степеней "2"-ки):
0 - нет доступа никуда
1 - доступ к 1-му разделу
2 - доступ ко 2-му разделу
4 -
8 -
....

Теперь, складываем:
ACL: 1 = 1 => доступ к 1-у разделу.
ACL: 1+2 = 3 => доступ к 1-у и 2-му разделу.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы