/**
  * @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]);
 }
예제 #2
0
 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;
     }
 }