/** * @Authorize "Admin" */ public function postChangeRole(int $userId, AdminChangeRoleBindingModel $model) : View { try { if (!$model->isValid()) { $viewModel = new \Framework\Areas\Admin\ViewModels\Users\ChangeRoleViewModel(); $viewModel->errorsList = $model->getErrorsList(); $viewModel->error = true; $user = \Framework\Core\Identity::getUserInformation($userId); $viewModel->userId = $user['id']; $viewModel->username = $user['username']; $viewModel->currentRoleId = $user['userrole_id']; foreach ($this->db->FindAll(\Framework\Config\Config::ROLE_CLASS) as $role) { $model->roles[] = array("id" => $role->id, "name" => $role->role); } return new View('\\Users\\getChangeRole', $viewModel); } $user = $this->db->FindFirst(\Framework\Config\Config::USER_CLASS, "id ='{$userId}'"); if ($user == false) { throw new \Exception("User #{$userId} does not exist"); } \Framework\Core\Identity::changeUserRole($user->username, $model->role); $viewModel = new \Framework\Areas\Admin\ViewModels\Users\ChangeRoleViewModel(); $viewModel->success = true; $viewModel->successList[] = "User role successfully changed"; $viewModel->userId = $user->id; $viewModel->username = $user->username; $viewModel->currentRoleId = \Framework\Core\Identity::getRoleId($model->role); foreach ($this->db->FindAll(\Framework\Config\Config::ROLE_CLASS) as $role) { $viewModel->roles[] = array("id" => $role->id, "name" => $role->role); } return new View('\\Users\\getChangeRole', $viewModel); } catch (\Exception $e) { $viewModel = new \Framework\Areas\Admin\ViewModels\Users\ChangeRoleViewModel(); $viewModel->errorsList = $model->getErrorsList(); $viewModel->errorsList[] = $e->getMessage(); $viewModel->error = true; $user = \Framework\Core\Identity::getUserInformation($userId); $viewModel->userId = $user['id']; $viewModel->username = $user['username']; $viewModel->currentRoleId = $user['userrole_id']; foreach ($this->db->FindAll(\Framework\Config\Config::ROLE_CLASS) as $role) { $model->roles[] = array("id" => $role->id, "name" => $role->role); } return new View('\\Users\\getChangeRole', $viewModel); } }