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