1. Add following code to _form.php
Yii::app()->getModule('rights'); if (Yii::app()->user->isSuperuser) { $all_roles = new RAuthItemDataProvider('roles', array( 'type' => 2, )); $data = $all_roles->fetchData(); echo CHtml::activeDropDownList($model, 'user_role', CHtml::listData($data, 'name', 'name')); } 2. Update actionCreate & actionUpdate of UsersController.php like this
public function actionCreate() { $model = new User; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_POST['User'])) { $model->attributes = $_POST['User']; if ($model->save()) { Rights::assign($model->user_role, $model->id); $this->redirect(array('view', 'id' => $model->id)); } } $this->render('create', array( 'model' => $model, )); } public function actionUpdate($id) { $model = $this->loadModel($id); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_POST['User'])) { $model->attributes = $_POST['User']; if ($model->save()) { Yii::app()->getModule('rights'); $assignedRoles = Rights::getAssignedRoles($model->id); foreach ($assignedRoles as $role => $detail) { Rights::revoke($role, $model->id); } Rights::assign($model->user_role, $model->id); $this->redirect(array('view', 'id' => $model->id)); } } $this->render('update', array( 'model' => $model, )); }
Allow admin to change user role
1. Add following code to _form.php [code language=”php”] Yii::app()->getModule(‘rights’); if (Yii::app()->user->isSuperuser) {
Related posts
Yii
Remove index.php from URL in YII
Learn how to configure Yii's UrlManager and Apache .htaccess rules to create clean, user-friendly URLs. This guide covers URL configuration, rewrite rules, common issues, and practical tips for improving Yii application routing
Yii
Yii Rights: Get all assigned roles of a user
Learn how to retrieve user roles in Yii Framework using the authassignment table, CDbCommand, and queryAll(). This guide explains how to fetch and store user roles, use parameter binding for safer SQL queries, leverage Yii’s built-in authorization manager, and implement role-based access control in PHP applications.
Yii
Disabled Yii logs and stack trace messages
Open up the index.php from root folder and comment out following 2 lines [code language=”php”] defined(‘YII_DEBUG’) or define(‘YII