/** * @param int $id - User ID * * @return \yii\web\Response */ public function actionSetRoles($id) { if (!Yii::$app->user->isSuperadmin and Yii::$app->user->id == $id) { Yii::$app->session->setFlash('error', UserManagementModule::t('back', 'You can not change own permissions')); return $this->redirect(['set', 'id' => $id]); } $oldAssignments = array_keys(Role::getUserRoles($id)); // To be sure that user didn't attempt to assign himself some unavailable roles $newAssignments = array_intersect(Role::getAvailableRoles(Yii::$app->user->isSuperAdmin, true), Yii::$app->request->post('roles', [])); $toAssign = array_diff($newAssignments, $oldAssignments); $toRevoke = array_diff($oldAssignments, $newAssignments); foreach ($toRevoke as $role) { User::revokeRole($id, $role); } foreach ($toAssign as $role) { User::assignRole($id, $role); } Yii::$app->session->setFlash('success', UserManagementModule::t('back', 'Saved')); return $this->redirect(['set', 'id' => $id]); }
protected function changeRoleAction($model) { if (!($user = User::findOne(['username' => $model->profile_id]))) { return; } switch ($model->role) { case 'admin': User::assignRole($user->id, 'unicredQuestionListSystemAdmin'); User::revokeRole($user->id, 'unicredQuestionListSystemCommercialDirector'); User::revokeRole($user->id, 'unicredQuestionListSystemManager'); break; case 'manager': User::assignRole($user->id, 'unicredQuestionListSystemManager'); User::revokeRole($user->id, 'unicredQuestionListSystemCommercialDirector'); User::revokeRole($user->id, 'unicredQuestionListSystemAdmin'); break; case 'empl': User::assignRole($user->id, 'unicredQuestionListSystemManager'); User::revokeRole($user->id, 'unicredQuestionListSystemCommercialDirector'); User::revokeRole($user->id, 'unicredQuestionListSystemAdmin'); break; case 'comdir': User::assignRole($user->id, 'unicredQuestionListSystemCommercialDirector'); User::revokeRole($user->id, 'unicredQuestionListSystemManager'); User::revokeRole($user->id, 'unicredQuestionListSystemAdmin'); break; } }