Difference between #6 and #7 of Assigning dynamic roles to a user Using yii Rights module at the time of user creation and using some special advanced features of yii rights

unchanged
Title
Assigning dynamic roles to a user Using yii Rights module at the time of user creation and using some special advanced features of yii rights
unchanged
Category
Tips
unchanged
Tags
user, user management, rights, roles, Role based access control, role
unchanged
Content
After Installing Yii Users and Rights to Newly Created Yii app we have to assign
dynamic roles to a user at the time of user creation .

Create a role manually
------------------

first we have to create a role manually and add some operations and/or tasks to
the role according to the needs

assume the role created was 'clients'

Giving role
------------------

This is very simple , achieved by using two lines of code 


save the user(assume $model->id is the user saved/created)

~~~
[php]
//assign role
$authorizer = Yii::app()->getModule("rights")->getAuthorizer();
$authorizer->authManager->assign('clients', $model->id); 
~~~


Getting user role
------------------

This is also very simple

the signed user id will get using Yii::app()->user->Id 

~~~
[php]
$roles=Rights::getAssignedRoles(Yii::app()->user->Id); // check for single
role
foreach($roles as $role)
if($role->name == 'clients')
{
//some actions here ..
$this->redirect(array('/mailbox'));
}
~~~



Making some actions public
------------------

this should be a common need of an app.


this is also very simple when using yii rights

just use a '-' (minus) operator like



~~~
[php]
        public function filters()
	{
		return array(
			'rights - publicprofile', // perform access control for CRUD
operations
			
		);
	}
~~~


here the publicprofile action is public, all other actions in the same
controller are under rights.

Getting all the roles
------------------

getting all the roles in the application

put this line in protected/config/main



~~~
[php]
'import'=>array(
		
		'application.modules.rights.components.dataproviders.*',
		
	),
~~~

get all roles as a dropdown





~~~
[php]
<?php
if (Yii::app()->user->isSuperuser) {
       $all_roles=new RAuthItemDataProvider('roles', array( 
	'type'=>2,
	));
      $data=$all_roles->fetchData();
?>
    <div>
        <label for="type_id">Type</label>
        <?php echo
CHtml::dropDownList("Type",'',CHtml::listData($data,'name','name'));?>

    </div>
<?php
}
?>
~~~



Thank you Chris for the awesome module. and thanks mishamx.