In my previous post I demonstrated you how to render different layout for different user role, now lets move a step forward and see how to create separate front and admin panel in a Yii based application.
Continue reading “How to separate front and admin panel in yii-framework”
Tag: Yii Admin
Allow admin to change user role
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, )); }