Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Выделение администратора среди пользователей |
Автор: zero50x 28.4.2014, 20:17 |
Только что закончил регистрацию и авторизацию на сайте для всех желающих. Таблица пользователей в БД: id, логин, пароль, дата регистрации. Хочу сделать пользователя администратора. Определить что это админ можно по логину, если логин=admin то... Вопрос в другом: как с точки зрения программирования администратор наделяется любыми привилегиями? У меня была мысль что в БД добавляется ещё одно поле, неважно пусть "adm" и пользователь у которого стоит в этом поле "1" считается администратором. Потом происходит проверка, например юзер пытается удалить статью другого юзера, проверка если adm у первого юзера = 1 то статья удаляется, если нет то статья остаётся нет прав. Вообще где и что почитать про права пользователей, владение пользователей теми или иными объектами, какие функции или группы функций за это отвечают? |
Автор: Sanchezzz 28.4.2014, 22:36 | ||
Существует много вида извращенств, но наверное самое интересное и мало где применимое это Группы ролей + Бизнес правила (RBAC), можно конечно использовать все по отдельности. Если вам будет достаточно 1-2 ролей на сайте то смело делайте доп поля в таблице. Нормализовать данные потом в что то серьезное не составит труда |
Автор: zero50x 28.4.2014, 22:38 |
Это была просто моя нубская догадка. А вопрос: расскажите или дайте ссылку как это надо делать, как это правильно и логично сделать? Sanchezzz поправьте пожалуйста сообщение вы вместо цитаты тег php использовали и вёрстка поехала от этого. |
Автор: ksnk 29.4.2014, 09:58 | ||||
zero50x, Я бы делал полную схему прав, по крайней мере, с точки зрения "программирования сверху". Так, чтобы это выглядело примерно так
В зависимости от настроения и пожеланий заказчика - метод hasRight рудиментируется в наличной реализации до проверки админ или не админ. Для сравнения - тот же код в Yii
Вообще говоря, в Yii'шной реализации отсутствует потенциальная возможность хозяину поста удалить собственный пост, а в моем случае, с передачей объекта в параметр функции проверки, потенциальная возможность есть. Начать читать можно с http://www.yiiframework.com/doc/guide/1.1/ru/topics.auth#sec-7. Роли можно называть также и "группами пользователей". Особой разницы нет. |
Автор: zero50x 29.4.2014, 10:21 |
Спасибо, направление дали, я тут почитал, информации мало но обрывки находятся. Многие предлагают всё же в БД делать поле права и там например 1, 2, 3, 4. Далее в системе при каком-то действии проверяется имеется ли нужная отметка у этого пользователя? Кстати первый код у вас с применением ООП написан, я смысл понял, но пока им не владею. Да я уже натыкался на информацию о том, что на фреймворках это сделать намного проще, но я новичёк и пока ими не владею. |
Автор: ksnk 29.4.2014, 11:19 |
zero50x, Совсем без ООП делать большую систему довольно грустно. Переделывать ее придется всю сразу и неясно где и как. Можно, конечно, упростить. Завести 4 группы пользователей - админы, модераторы, юзеры, анонимусы (3,2,1,0). В таблице юзеров завести поле с индексом группы. Для системы комментариев права расставляются естественным образом - право на чтение имеют анонимусы++ право на добавление записи имеют юзеры++ право на изменение всех записей имеют модераторы++ Ну и админ имеет уникальное право изменять юзерам группу. Немножко жестко, но для всего одного поля в таблице - достаточно большие возможности. |