Как в mysql грамотней сделать доступы для пользователей?

Пишу админку для контент менеджеров. В управлении 10 сайтов, каждый контент менеджер должен иметь доступ к определенным сайтам. Подскажите грамотно ли я делаю или есть какое-то более элегантное решение:
Есть таблица users (pk: id, nickname, email)
Есть таблица sites (pk: url, name, roots)
pk - primary key.
Так как пользователи могут иметь доступ или к одному или к нескольким сайтам, то в поле roots пишу айдишники пользователей (roots) через запятую... И что бы получить для конкретного пользователя список сайтов - делаю селект лайк %айди%, но тогда лайк может выбирать и 1, и 11, и 111 айдишник когда делаешь like %1%
Как грамотней реализовать рапределение ролей и итоговый селект выбора списка сайтов, которые доступны для юзера?
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для реляционной базы данных отношения многие-ко-многим штатно реализуются через отдельную таблицу связи (user_id, site_id), где эта пара одновременно является первичным ключом.
А использование url в качестве первичного ключа неправильно. При смене домена придётся перестраивать все таблицы, ссылающиеся на sites.
Ответ написан
PML
@PML
Web-developer
Создаешь список сайтов со значениями true/false:
table: id, site_name, flag
Далее либо на бэке делаешь проверку/либо на фронте. Смотря, как реализовываешь.
Ответ написан
Ваш ответ на вопрос

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

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