Как реализовать проверку прав пользователя на сайте, для изменения определённой страницы?
Доброго времени суток! Занимаюсь изобретением своего велосипеда, и стал вопрос, как реализовать проверку прав пользователя для редактирования определённой страницы! К примеру: Авторизованый пользователь создаёт на сайте блог, в этом блоге он может постить свои статьи. Как правильно организовать проверку, является ли пользователь администратором блога и если он администратор, то разрешить ему делать всё что душе угодно в данном блоге? Так же в блоге будут присутствовать модераторы и подписчики и у каждого будут разные права! Сейчас для теста реализовал следующим образом. В БД имеются таблицы blog и permission в табл. blog хранится непосредственно вся инфа о блоге "описание, его id и тд.", в таблице permission хранится id блога, id пользователя и роль пользователя, в которой роли хранятся в виде чисел 1, 2, 3 (1 = администратор, 2 = модератор, 3 = подписчик). При загрузке блога идет запрос в БД и возвращается одно из значений роли пользователя. В общем я понимаю, что это очень коряво, поэтому и интересует вопрос как всё таки правильно реализовать эту проверку, возможно как то можно единожды достать права для всех блогов пользователя и положить их в сессию, что бы каждый раз не обращаться к БД? Может есть какие то статьи по это му поводу или хотя бы натолкнете на правильную мысль? Заранее спасибо!
Лучше всего использовать готовые системы для управлениями аутентификацией, ролями, авторизацией, правами.. https://cartalyst.com/manual/sentry/2.1
Если к вашему велосипеду возможно что-то прикрутить...
В целом у вас подход правильный. В БД храним роли, права. В коде определяем есть ли право на действие. Чтобы не было постоянных запросов к БД кешируем в память (Memcached/Redis).
Авторизация на сессиях у меня реализована, также есть группы для пользователей, но эти группы предназначены для более глобальных вопросов, типа только определённая группа пользователей может создавать блоги, а теперь собственно и осталось реализовать права на определённую запись. Только что наткнулся на модель системы разграничения прав доступа на основе ролей (RBAC) правда еще не до конца вкурил то ли это что нужно, но бегло пробежав глазами показалось что как раз то. Что скажете? И насчет кеширования вы правы лишние запросы в базу не к чему.