コード例 #1
0
 /**
  * Creates a new User model.
  * If creation is successful, the browser will be redirected to the 'index' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $manager = \Yii::$app->authManager;
     $post = \Yii::$app->request->post();
     /** @var User $user */
     $user = Yii::createObject(['class' => User::className(), 'scenario' => 'create']);
     $this->performAjaxValidation($user);
     if ($user->load($post) && $user->create()) {
         foreach ($post['roles'] as $role) {
             // Get role object
             $role = $manager->getRole($role);
             // Assign the role
             $manager->assign($role, $user->id);
         }
         Yii::$app->getSession()->setFlash('success', Yii::t('user', 'User has been created'));
         return $this->redirect(['update', 'id' => $user->id]);
     }
     // Get all roles
     $roles = $manager->getRoles();
     // Superadmin can only assign the 'Superadmin' role
     if (isset($roles['Superadmin']) && !\Yii::$app->user->can('Superadmin')) {
         unset($roles['Superadmin']);
     }
     // Remove the 'frontendUser' role if it exists
     if (isset($roles['frontendUser'])) {
         unset($roles['frontendUser']);
     }
     return $this->render('create', ['user' => $user, 'roles' => $roles]);
 }
コード例 #2
0
 /**
  * @param $params
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = User::find();
     // Don't show super admin for other users
     if (!Yii::$app->user->can('Superadmin')) {
         // The superadmin id is loaded from the 'infoweb-user' submodule
         $query->andWhere('id != :id', ['id' => Yii::$app->getModule('user')->getModule('infoweb-user')->params['superAdminId']]);
     }
     // Only show users that are allowed to access the backend
     $query->andWhere(['scope' => [User::SCOPE_BACKEND, User::SCOPE_BOTH]]);
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $this->addCondition($query, 'username', true);
     $this->addCondition($query, 'email', true);
     $this->addCondition($query, 'created_at');
     $this->addCondition($query, 'registered_from');
     return $dataProvider;
 }