Rights роль по умолчанию
Rights роль по умолчанию
Есть роли Guest и User
Как сделать так, чтоб до авторизации пользователь имеет роль Guest, а после авторизации автоматом назначался роль User?
Как сделать так, чтоб до авторизации пользователь имеет роль Guest, а после авторизации автоматом назначался роль User?
Re: Rights роль по умолчанию
Тут недостаточно понятно написано?
Re: Rights роль по умолчанию
rights работает в связке с yii-user или просто?
P.S. Больше данных.....
P.S. Больше данных.....
Re: Rights роль по умолчанию
2 SiZE:
Там написано только для гостей и админов
2 stop4uk
Да, совместно с Yii-User
Main config:
Щас в rights я вручную добавляю роль User (authenticated) каждому вновь зарегистрированному пользователю, но это же неправильно
Там написано только для гостей и админов
2 stop4uk
Да, совместно с Yii-User
Main config:
Код: Выделить всё
'authManager'=>array(
'class'=>'RDbAuthManager',
'defaultRoles' => array('Guest')
),
Re: Rights роль по умолчанию
Да, действительно, тогда тебе не подходит.Spot писал(а):2 SiZE:
Там написано только для гостей и админов
Re: Rights роль по умолчанию
На вскидку, в модели создания пользователяSpot писал(а):Щас в rights я вручную добавляю роль User (authenticated) каждому вновь зарегистрированному пользователю
Код: Выделить всё
public function afterSave() {
parent::afterSave();
if( $this->isNewRecord ) {
// Назначаем права по умолчанию
Rights::assign( self::ITEM_NAME_USER, $this->id, $bizRule=null, $data=null );
}
}
Re: Rights роль по умолчанию
Тогда делаем так:
В контроллерах есессно
А теперь по тому что те надо конкретно (в Rights по умолчанию это группа Authenticate)
В модуль «user» в папке components создаем файл OnAfterRegistrationBehavior.php со следующим содержимым
После чего к модели «RegistrationForm» добавляем поведение «OnAfterRegistrationBehavior»
Код: Выделить всё
'components'=>array(
#...
'user'=>array(
'class' => 'RWebUser',
'allowAutoLogin'=>true,
),
'authManager'=>array(
'class'=>'RDbAuthManager',
'defaultRoles' => array('Guest') // дефолтная роль
),
#...
),
Код: Выделить всё
public function filters(){
return array(
#...,
'rights'
);
}
В модуль «user» в папке components создаем файл OnAfterRegistrationBehavior.php со следующим содержимым
Код: Выделить всё
class OnAfterRegistrationBehavior extends CActiveRecordBehavior{
function afterSave($event){
// получаем таблицу в БД
$assignmentTable = Yii::app()->getAuthManager()->assignmentTable;
// получаем параметры нового пользователя
$attr = $event->sender->getAttributes();
// вытаскиваем название роли по умолчанию из настроек модуля rights
$defRole = Yii::app()->getModule('rights')->authenticatedName;
// добавляем привязку
Yii::app()->db->createCommand(
"INSERT INTO {$assignmentTable}
(`itemname`,`userid`,`bizrule`,`data`)
VALUES
('{$defRole}','{$attr['id']}',NULL,'N;')")->execute();
}
}
Код: Выделить всё
public function behaviors(){
return array(
'OnAfterRegistrationBehavior' => array(
'class' => 'application.modules.user.components.OnAfterRegistrationBehavior'
)
);
}
Re: Rights роль по умолчанию
Спасибо stop4uk, получилось!
-
- Сообщения: 1268
- Зарегистрирован: 2013.07.17, 17:37
Re: Rights роль по умолчанию
Код: Выделить всё
class AuthManager extends \CDbAuthManager
{
public $defaultRoles = array(UserModule::ROLE_GUEST);
public $assignmentTable = 'user_auth_assign';
public $itemTable = 'user_auth_item';
public $itemChildTable = 'user_auth_item_child';
public function init()
{
parent::init();
$user = \Yii::app()->getUser();
if (!$user->getIsGuest()) {
if (!$this->checkAccess($user->getRole(), $user->getId())) {
$this->assign($user->getRole(), $user->getId());
}
}
}
}
-
- Сообщения: 1268
- Зарегистрирован: 2013.07.17, 17:37
Re: Rights роль по умолчанию
чего то щас грузанулся в это, решение мое неверно, не предусмотрено удаление юзера, смена роли, плюс можно проверять через isAssigned