控制器
<?php /** * Created by PhpStorm. * User: 青春已被放纵了 * Date: 2017/1/13 * Time: 14:12 */ namespace backend\controllers; use yii\web\Controller; use backend\models\Rbac; use Yii; use Db; class RbacController extends Controller{ public function actionPower(){ $model = new Rbac(); return $this->render("power",['model'=>$model]); } /** * @return \yii\web\Response * 创建权限 */ public function actionCreate_power(){ $power = Yii::$app->request->post(); $item = $power['Rbac']['power']; $auth = Yii::$app->authManager; $createPost = $auth->createPermission($item); $createPost->description = '创建了'.$item .'权限'; $auth->add($createPost); return $this->redirect("?r=rbac/role"); } /** * @return string * */ public function actionRole(){ $model = new Rbac(); return $this->render("role",['model'=>$model]); } /** * @return \yii\web\Response * 添加角色 */ public function actionCreate_role(){ $power = Yii::$app->request->post(); $item = $power['Rbac']['role']; $auth = Yii::$app->authManager; $role = $auth->createRole($item); $role->description = '创建了 ' . $item . ' 角色'; $auth->add($role); return $this->redirect("?r=rbac/role_power"); } public function actionRole_power(){ $model = new Rbac(); $role = Yii::$app->db->createCommand("select name from auth_item where type=1")->queryAll(); foreach ($role as $v){ $roles[$v['name']]=$v['name']; } $power = Yii::$app->db->createCommand("select name from auth_item where type=2")->queryAll(); foreach ($power as $v){ $powers[$v['name']]=$v['name']; } return $this->render("role_power",['model'=>$model,'power'=>$powers,'role'=>$roles]); } public function actionCreate_role_power(){ $items= Yii::$app->request->post(); $role = $items['Rbac']['role']; foreach($items['Rbac']['power'] as $value ){ $auth = Yii::$app->authManager; $parent = $auth->createRole($role); $child = $auth->createPermission($value); $auth->addChild($parent, $child); } return $this->redirect('?r=rbac/fenpei'); } public function actionFenpei(){ $model = new Rbac(); $sql = 'select name from auth_item where type=1'; $role =\Yii::$app->db->createCommand($sql)->queryAll(); foreach($role as $v){ $roles[$v['name']] = $v['name']; } $sql1 = 'select id,username from user'; $power =\Yii::$app->db->createCommand($sql1)->queryAll(); foreach($power as $vv){ $user[$vv['id']] = $vv['username']; } return $this->render('fenpei',['role'=>$roles,'user'=>$user,'model'=>$model]); } public function actionCreate_user_role(){ $items= Yii::$app->request->post(); $role = $items['Rbac']['user']; foreach ($items['Rbac']['role'] as $value) { $auth = \Yii::$app->authManager; $reader = $auth->createRole($value); $auth->assign($reader, $role); } } public function beforeAction($action) { $action = Yii::$app->controller->action->id; if(\Yii::$app->user->can($action)){ return true; }else{ throw new \yii\web\UnauthorizedHttpException('对不起,您现在还没获此操作的权限'); } } public function actionInsert(){ echo 'insert'; } public function actionDelete(){ echo 'delete'; } public function actionUpdate(){ echo 'update'; } }
power.php
<?php /** * Created by PhpStorm. * User: 青春已被放纵了 * Date: 2017/1/13 * Time: 15:41 */ use yii\helpers\Html; use yii\bootstrap\ActiveForm; ?> <?php $form = ActiveForm::begin([ 'id' => 'login-form', 'options' => ['class' => 'form-horizontal'], 'action'=>'?r=rbac/create_power', 'method'=>'post' ]); ?> <?= $form->field($model, 'power')->textInput()?> <div class="form-group"> <?= Html::submitButton('提交', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end() ?>
role.php
<?php /** * Created by PhpStorm. * User: 青春已被放纵了 * Date: 2017/1/13 * Time: 17:10 */ use yii\helpers\Html; use yii\bootstrap\ActiveForm; ?> <?php $form = ActiveForm::begin([ 'id' => 'login-form', 'options' => ['class' => 'form-horizontal'], 'action'=>'?r=rbac/create_role', 'method'=>'post' ]); ?> <?= $form->field($model, 'role')->textInput()?> <div class="form-group"> <?= Html::submitButton('提交', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end() ?>
fenpei.php
<?php /** * Created by PhpStorm. * User: 青春已被放纵了 * Date: 2017/1/13 * Time: 17:10 */ use yii\helpers\Html; use yii\bootstrap\ActiveForm; ?> <?php $form = ActiveForm::begin([ 'id' => 'login-form', 'options' => ['class' => 'form-horizontal'], 'action'=>'?r=rbac/create_user_role', 'method'=>'post' ]); ?> <?= $form->field($model,'user')->radioList($user);?> <?= $form->field($model, 'role[]')->checkboxList($role);?> <div class="form-group"> <?= Html::submitButton('提交', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end() ?>
fenpei.php
<?php /** * Created by PhpStorm. * User: 青春已被放纵了 * Date: 2017/1/13 * Time: 17:10 */ use yii\helpers\Html; use yii\bootstrap\ActiveForm; ?> <?php $form = ActiveForm::begin([ 'id' => 'login-form', 'options' => ['class' => 'form-horizontal'], 'action'=>'?r=rbac/create_role_power', 'method'=>'post' ]); ?> <?= $form->field($model, 'role')->radioList($role);?> <?= $form->field($model, 'power[]')->checkboxList($power);?> <div class="form-group"> <?= Html::submitButton('提交', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end() ?>
model中
<?php /** * Created by PhpStorm. * User: 青春已被放纵了 * Date: 2017/1/13 * Time: 15:35 */ namespace backend\models; use yii\base\Model; class Rbac extends Model{ public $power; public $role; public $user; public function rules(){ return [ //填写验证 ]; } public function attributeLabels(){ return [ 'power'=>'权限', 'user'=>'用户', 'role'=>'角色', ]; } }