/** * 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]); }
/** * @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; }