Yii Rights Management Tips

You are viewing revision #1 of this wiki article.
This version may not be up to date with the latest version.
You may want to view the differences to the latest version.

next (#2) »

  1. Create a role manually
  2. Giving role
  3. Getting user role
  4. Finding Users with same role
  5. Making some actions public
  6. Getting all the roles

yii rights some tips..

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)

//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

$roles=Rights::getAssignedRoles(Yii::app()->user->Id); 
echo key($roles) // for single role

foreach($roles as $role) // for multiple role
{
if($role->name == 'clients')
{
//some actions here ..

}
}

Finding Users with same role ¶

$role = 'role-name' //role name here
$users = AuthAssignment::model()->findAllByAttributes(array('itemname'=>$role));
foreach($users as $user)
{
 echo $user->userid;
}

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

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

'import'=>array(
		
		'application.modules.rights.components.dataproviders.*',
		
	),

get all roles as a dropdown

<?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.