User и несколько ролей (сложный вопрос)

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
alex_90
Сообщения: 41
Зарегистрирован: 2012.10.03, 09:56

User и несколько ролей (сложный вопрос)

Сообщение alex_90 »

Всем доброе утро! Меня интересует такой вопрос. Как сделать, чтобы User выбирал роль, под которой ему можно заходить? Короче, есть у меня таблица User с полями id, username и password. Также есть authitem, где по :type = 2 можно узнать все роли, которые только есть в системе. Теперь такой вопрос: корректно ли делать так

Код: Выделить всё

$auth->assign('admin','petya');
, а затем

Код: Выделить всё

$auth->assign('reader','petya');
?

Если admin может удалять записи, а reader нет и Petya зашел под reader'ом, то удалить он запись не должен. Несмотря на то, что у его второй роли есть такие привелегии.

Спасибо всем, кто дочитал аж до сюда :)
Буду рад любой помощи!
Плюясь и чертыхаясь, коты переплывали реки лавы на заре мироздания.
wolfandman
Сообщения: 40
Зарегистрирован: 2012.06.04, 19:52

Re: User и несколько ролей (сложный вопрос)

Сообщение wolfandman »

Для чего такая премудрая система?
Пусть гость может только читать, пользователь и читать и писать, админ и читать и писать и удалять.
Права и роли наследуются друг от друга. http://yiiframework.ru/doc/cookbook/ru/access.rbac.file
То есть сначала описывается гость с его правами, затем пользователь наследует его права+новые расширенные права, админ наследует пользователя+новые расширенные права.
Аватара пользователя
alex_90
Сообщения: 41
Зарегистрирован: 2012.10.03, 09:56

Re: User и несколько ролей (сложный вопрос)

Сообщение alex_90 »

Нет, вы меня не так поняли. С иерархией ролей у меня проблем нет. Я имел в виду как одному User'у назначить сразу несколько ролей. И проверять потом checkAccess() у него.
Плюясь и чертыхаясь, коты переплывали реки лавы на заре мироздания.
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: User и несколько ролей (сложный вопрос)

Сообщение futbolim »

одному юзеру назначить несколько ролей ?
тут попахивает неправильной логикой приложения.
Это как программист и слесарь в одном лице.
Или Вы хотите человека-оркестра сделать ? (:
Аватара пользователя
alex_90
Сообщения: 41
Зарегистрирован: 2012.10.03, 09:56

Re: User и несколько ролей (сложный вопрос)

Сообщение alex_90 »

А что, не бывает программист-слесаря в одном лице? Я абсолютно серьезно говорю. Нужно разработать ВЕБ-приложение для регистрации клиентов. Персона может работать на фирме кем-то (под какой-то ролью быть). А может и прийти как [s]клиент (гость)[/s] любой другой в эту фирму . Или не может?
Последний раз редактировалось alex_90 2012.10.04, 09:26, всего редактировалось 1 раз.
Плюясь и чертыхаясь, коты переплывали реки лавы на заре мироздания.
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: User и несколько ролей (сложный вопрос)

Сообщение futbolim »

нет, не может.
одновременно у человека может быть одна роль. (со стороны логики и здравого смысла)
с течением времени она может меняться.
Аватара пользователя
alex_90
Сообщения: 41
Зарегистрирован: 2012.10.03, 09:56

Re: User и несколько ролей (сложный вопрос)

Сообщение alex_90 »

Петя работает бухгалтером и сисадмином (а вечером моет полы в коридоре). Есть информационная система, где зарегистрированы все работники. Чтобы войти в систему, нужно ввести свой логин/пароль и выбрать роль, под которой он хочет зайти. Неужели это настолько сложный и технически невыполнимый проект?
Плюясь и чертыхаясь, коты переплывали реки лавы на заре мироздания.
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: User и несколько ролей (сложный вопрос)

Сообщение futbolim »

нет ничего невозможного
Аватара пользователя
alex_90
Сообщения: 41
Зарегистрирован: 2012.10.03, 09:56

Re: User и несколько ролей (сложный вопрос)

Сообщение alex_90 »

Может предложите какую-нибудь свою реализацию? Буду оч. рад. :)
Плюясь и чертыхаясь, коты переплывали реки лавы на заре мироздания.
Аватара пользователя
Ryadnov
Сообщения: 456
Зарегистрирован: 2010.06.20, 00:38
Откуда: Санкт-Петербург

Re: User и несколько ролей (сложный вопрос)

Сообщение Ryadnov »

К одному пользователю можно присвоить несколько ролей и это нормально.
@alex_90, Может вам стоит присмотреться к CDbAuthManager ?
и зачем выбирать роль? У меня либо есть доступ в это помещение или нет (или вы будете выходить из здания, подходить к охраннику и говорить что сейчас я захожу как уборщица))))
Аватара пользователя
alex_90
Сообщения: 41
Зарегистрирован: 2012.10.03, 09:56

Re: User и несколько ролей (сложный вопрос)

Сообщение alex_90 »

Ryadnov писал(а):К одному пользователю можно присвоить несколько ролей и это нормально.
@alex_90, Может вам стоит присмотреться к CDbAuthManager ?
и зачем выбирать роль? У меня либо есть доступ в это помещение или нет (или вы будете выходить из здания, подходить к охраннику и говорить что сейчас я захожу как уборщица))))
CDbAuthManager? Я как раз его использую. У нас администратор динамически назначает роль кому-то))

И грубо говоря -- да. Надо выйти из помещения и сказать охраннику что мне теперь нельзя в тот кабинет заходить, я теперь техничка. У нас так задумано. Без выбора ролей -- никак.
Плюясь и чертыхаясь, коты переплывали реки лавы на заре мироздания.
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: User и несколько ролей (сложный вопрос)

Сообщение futbolim »

Ryadnov писал(а):К одному пользователю можно присвоить несколько ролей и это нормально.
Это нормально на уровне кода, на уровне здравого смысла - это ...
Аватара пользователя
Ryadnov
Сообщения: 456
Зарегистрирован: 2010.06.20, 00:38
Откуда: Санкт-Петербург

Re: User и несколько ролей (сложный вопрос)

Сообщение Ryadnov »

linkup писал(а):
Ryadnov писал(а):К одному пользователю можно присвоить несколько ролей и это нормально.
Это нормально на уровне кода, на уровне здравого смысла - это ...
У меня есть брелок для ключей. Там есть ключ от парадной двери моего дома + ключ от собственной двери
Потом я купил еще одну квартиру - добавился еще 1 ключ.
Это нормально с точки зрения здравого смысла?
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: User и несколько ролей (сложный вопрос)

Сообщение Stamm »

linkup писал(а):
Ryadnov писал(а):К одному пользователю можно присвоить несколько ролей и это нормально.
Это нормально на уровне кода, на уровне здравого смысла - это ...
На уровне здравого смысла — это называется оптимизация расходов или наём человека-оркестра.
Да и к тому же, например модератор. Он же и пользователь, и модератор (чуть-чуть админ)
Аватара пользователя
Ryadnov
Сообщения: 456
Зарегистрирован: 2010.06.20, 00:38
Откуда: Санкт-Петербург

Re: User и несколько ролей (сложный вопрос)

Сообщение Ryadnov »

alex_90 писал(а):И грубо говоря -- да. Надо выйти из помещения и сказать охраннику что мне теперь нельзя в тот кабинет заходить, я теперь техничка. У нас так задумано. Без выбора ролей -- никак.
Ну тогда после логина, пользователь выбирает доступную ему роль и работает дальше, выбранную роль пишите в сессию...
А в чем была суть вопроса? )))
Аватара пользователя
alex_90
Сообщения: 41
Зарегистрирован: 2012.10.03, 09:56

Re: User и несколько ролей (сложный вопрос)

Сообщение alex_90 »

Не могу понять как это технически осуществить. Если сделать, как вы говорите, тогда что будет проверять Yii::app()->user->checkAccess('deletePost')? Какая была роль в тот момент?
Плюясь и чертыхаясь, коты переплывали реки лавы на заре мироздания.
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: User и несколько ролей (сложный вопрос)

Сообщение futbolim »

2 Dyadnov
При чем здесь ключи ? Речь шла о людях. (но наследованием достигается любой результат)
2 Stamm :
Спасибо, что объяснили )
Я говорил о другом.
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: User и несколько ролей (сложный вопрос)

Сообщение mat.twg »

linkup писал(а):
Ryadnov писал(а):К одному пользователю можно присвоить несколько ролей и это нормально.
Это нормально на уровне кода, на уровне здравого смысла - это ...
Не спорьте.
Один субъект может иметь несколько ролей.
Одну роль могут иметь несколько субъектов.
Одна роль может иметь несколько разрешений.
Одно разрешение может принадлежать нескольким ролям.
Ответить