[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: установка ролей пользователей
Reh
Может есть хорошие примеры как организовать?

Нашел такое, но что то слишком замудренное
https://habrahabr.ru/post/51327/
karm
а что вы хотите))
на самом деле это легко

Создайте нужную таблицу, нужные колонки
типо
самый крутой
менее крутой
самые не крутой

присваивайте им какие-то индикаторы, даже просто цифры можно, к примеру 1,2,3
потом условие создайте
пользователь с цифрой 1 например самый крутой, Ему все можно, менять, добавляьт, удалять, остальные менее
есть еще второй способ, в phpmyadmin организовано уже система ролей, ищите литературу
Reh
Дак это понятно

В первой таблице пользователи

[sql]
CREATE TABLE `admin_access` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL
)
[code]

Во второй к примкеру все запросы из урл которые возможны,
но как быть если у одного запроса разные действия?
Игорь_Vasinsky
Reh
урл делиться на роуты, экшены и идентификаторы.

ты определись для чего тебе права, для роутов или для роутов и экшенов.

идентификаторы тут учитывать не надо.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Reh
Для экшенов.
А почему идентификатры учитывать не надо?
Например пользователь может редактировать статьи только свои, они же по id определяются
karm
но как быть если у одного запроса разные действия?

я это не понял! Все можно по идентификаторам.

Например пользователь который может удалять файлы - 1
Который не может - 2

Код с Delete ставите условие if user_id = 1 { может удалять}
elseif user_id - 2 {закрыть доступ к удалению файлов}

и тд

также на другие вещи
Reh
karm
Давай по прядку
Есть таблица с юзерами, так?
Вторую делаем с экшнами, так?
А в третьей пропишем у каких юзеров к каким экшенам доступ. Так?Или я не так пойму?
karm
Ну это вам не я советовал, да может и так можете сделать связь один ко многим. А в чему у вас собственно проблема?
Где именно трудно?
Reh
дак в этом и есть как таблицы организовать
karm
присваивайте им какие-то индикаторы, даже просто цифры можно, к примеру 1,2,3
потом условие создайте
пользователь с цифрой 1 например самый крутой, Ему все можно, менять, добавляьт, удалять, остальные менее
есть еще второй способ, в phpmyadmin организовано уже система ролей, ищите литературу


этот вариант не пойдет?

в самом файле делайте условиее просто на нужные вещи

например, кнопка удалить записи из базы, открывайте ее только пользователю с цифрой 1
SlavaFr
В принципе тот концепт который написан по той ссылке которую ты в первом посте написал, довольно хороший и относительно простой.
Легче не получится...
Если хочешь организовать Роли, Ресуры, Права и Актёров, то после появления более чем 3 Актёров станет ясно, что без Групп тоже не обойтись.....

Уже в примере твоего собеседника :
 ( if user_id = 1 { может удалять}
elseif user_id - 2 {закрыть доступ к удалению файлов})

видно, что такие операции делаются не с одним Юзером, а с целой ГРУППОЙ Юзеров, так как перечислять права на ресурс не Для группы, а для каждого Юзера, превратится в большую проблему.



Постарайся всё же понять с примеров которые ты сам привёл на странице https://habrahabr.ru/post/51327/

или как это сделали другие
https://framework.zend.com/manual/2.2/en/mo....acl.intro.html
http://symfony.com/doc/current/security/acl.html



_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Reh
Мож кто за деньги в личку поможет алгоритм составить?
Игорь_Vasinsky
эээ, харе. 3 года на форуме ещё не хватало деньги за алгоритмы платить.

статьи для конкретного пользователя ты можешь и в бд сразу проверять по User_id в сессии.

вообще, был бы у тебя опыт малёха с Yii - ты бы знал что такое RBAC
http://yiiframework.ru/doc/cookbook/ru/access.rbac.file - если бы ты видел как там устроено - то без проблем бы написал бы своё.

а вообще - чё тут сложного - в ролях?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Reh
Игорь_Vasinsky

сейчас скачаю юй, посмотрю тогда как там устроено.

Цитата
а вообще - чё тут сложного - в ролях?

поидее все просто, есть роль(группа пользователей), есть экшены и есть правила кому какой можно, кому нельзя, проверили если все норм - показываем что хотел, елси доступа нет - говорим никак. Алгоритмов куча, способов от от ООП и до if и switch хот ж..й ешь. Но вот с авторством своего контента какая то задница вышла если юзер в группе где нельзя менять, или со своим профилем тоже и тд.
Сейчас фреймворк поизучаю, мож чего полезного и найду) Спасибо!
SlavaFr

Цитата (Reh @ 6.05.2017 - 11:08)
Но вот с авторством своего контента какая то задница вышла если юзер в группе где нельзя менять, или со своим профилем тоже и тд.


ну для оттедльного юзера который может изменять свой собственный контент, нужно всё ровно подстраивать скрипт так, что бы он смотрел,
пытается ли юзер изменить собсрвенный Ресурс.
Для этого ты можешь сделать метод Resource->isOwner(User $user); или если тебе больше нравится User->hasResource(Resource $resource);

Если в принципе вообще все Юзеры имеют право изменять собственные ресурсы, то тебе и не надо создавать группу для изменения собственных ресурсов, в противном случае проверяешь относится ли Юзер к Группе имеющих право менять собственные посты и проверяешь дополнительно права группы на то, что бы писать.
if(User->inGroup('normal_user') && ACL->isAllowed('normal_user', $resource, 'write') ) { ... };.


Внесение прав на группы делаешь как в ZentFramework ACL или как ты сам решил сделать...


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.