YII2.0 中如何给一个注册用户添加一个权限或角色

在gii中生成model文件AuthItem.php和AuthAssignment.php

  1. 修改SignupForm文件

class SignupForm extends Model{

# code...

public $permissions ;

  # code...

}

  2.修改SiteController文件

use backend \models\ AuthItem;

public function actionSignup()

{
    $model = new SignupForm();
   
 $authItems =AuthItem:: find()-> all();
   
 if ($model-> load(Yii ::$app-> request->post ())) {
       
 if ($user = $model->signup ()) {
           
 if (Yii:: $app->getUser ()->login ($user)) {
               
 return $this ->goHome();
            }
        }
    }

   
 return $this->render ('signup', [
       
 'model' => $model,
       
 'authItems' =>$authItems
   
 ]);
}

  3.修改signup.php文件

# code...

use

yii \ helpers  \ ArrayHelper ;

# code...

<?php

$authItems

= ArrayHelper  :: map (  $authItems , 'name'  , 'name' );

?>

    <?=

$form -> field  ( $model ,  'permissions' ) ->  checkboxList ( $authItems  );  ?>

# code...

4.修改SignupForm文件

/**
* Signs user up.
*
*
 @return
 User|null the saved model or null if saving fails
*/

public function signup()
{
   
 if ($this-> validate()) {
       
 $user = new User();
       
 $user ->username = $this->username ;
       
 $user ->email = $this->email ;
       
 $user ->setPassword( $this->password );
       
 $user ->generateAuthKey();
       
 $user ->save();

       
 $permissionList =$_POST[ 'SignupForm']['permissions' ];
       
 // lets add the permissions
       
 foreach( $permissionList as $value ){
           
 $newPermissions =new AuthAssignment ();
           
 $newPermissions ->user_id= $user->id ;
           
 $newPermissions ->item_name= $value;
           
 $newPermissions ->save();
        }
       
 return $user ;
    }

   
 return null ;
}

来自于datou:https://github.com/datou-leo/ci


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reg183

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值