/** * Update an existing User model. If update is successful, the browser * will be redirected to the 'view' page. * @param string $id * @return mixed */ public function actionUpdate($id) { if ((Yii::$app->user->can("update-user") || Yii::$app->user->can("user")) && $id != 1) { $permissoes = AuthItem::getListToDropDownList(); // set up user and profile $user = $this->findModel($id); $user->setScenario("admin"); $profile = $user->profile; $mensagem = ""; //Informa ao usuário mensagens de erro na view //Permissão do usuário $authAssignment = new AuthAssignment(); $authItensUser = AuthAssignment::find()->where(['user_id' => $id])->all(); $permissoesUser = []; foreach ($authItensUser as $aiu) { array_push($permissoesUser, $aiu->item_name); } //Recebe as permissões salvas do usuário $authAssignment->item_name = $permissoesUser; // load post data and validate $post = Yii::$app->request->post(); if ($user->load($post) && $user->validate() && $profile->load($post) && $profile->validate()) { //Inicia a transação: $transaction = \Yii::$app->db->beginTransaction(); try { $itensInseridos = true; if (isset($post['AuthAssignment']['item_name']) && !empty($post['AuthAssignment']['item_name'])) { Yii::$app->db->createCommand("DELETE from auth_assignment WHERE \n user_id = :iduser ", [':iduser' => $user->id])->execute(); $roles = $post['AuthAssignment']['item_name']; foreach ($roles as $role) { $user->alterarPermissoes($role, $user->id); } } else { Yii::$app->db->createCommand("DELETE from auth_assignment WHERE \n user_id = :iduser ", [':iduser' => $user->id])->execute(); } if (!$user->save()) { $mensagem = "Não foi possível salvar os dados"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; } if (!$profile->setUser($user->id)->save()) { $mensagem = "Não foi possível salvar os dados"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; } if ($itensInseridos) { $transaction->commit(); return $this->redirect(['view', 'id' => $user->id]); } } catch (\Exception $exception) { $transaction->rollBack(); $mensagem = "Ocorreu uma falha inesperada ao tentar salvar"; } } // render return $this->render('update', compact('user', 'profile', 'permissoes', 'permissoesUser', 'mensagem', 'authAssignment')); } else { throw new ForbiddenHttpException("Acesso negado!"); } }
/** * Display registration page */ public function actionRegister() { /** @var \amnah\yii2\user\models\User $user */ /** @var \amnah\yii2\user\models\Profile $profile */ /** @var \amnah\yii2\user\models\Role $role */ // AuthAssigment // set up new user/profile objects $user = $this->module->model("User", ["scenario" => "register"]); $profile = $this->module->model("Profile"); // load post data $post = Yii::$app->request->post(); if ($user->load($post)) { // ensure profile data gets loaded $profile->load($post); // validate for ajax request if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($user, $profile); } // var_dump($post); if (isset($post['roles'])) { // $aux = $post['User']['role_id']; // $roles = explode(',', $aux); $roles = $post['roles']; // var_dump($post['User']['role_id']); // $roles = $post['User']['role_id']; } // validate for normal request if ($user->validate() && $profile->validate()) { // perform registration $role = $this->module->model("Role"); // VEJA AQUI !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $user->setRegisterAttributes($role::ROLE_USER, $user::STATUS_ACTIVE)->save(); // $user->setPermissoes(1,$user->id); $profile->setUser($user->id)->save(); $idUser = $user->id; // var_dump($idUser); foreach ($roles as $role) { $user->setPermissoes($role, $idUser); } // $this->afterRegister($user); // set flash // don't use $this->refresh() because user may automatically be logged in and get 403 forbidden $successText = Yii::t("user", "Successfully registered [ {displayName} ]", ["displayName" => $user->getDisplayName()]); $guestText = ""; if (Yii::$app->user->isGuest) { //$guestText = Yii::t("user", " - Please check your email to confirm your account"); } Yii::$app->session->setFlash("Register-success", $successText . $guestText); } } $permissoes = AuthItem::getListToDropDownList(); return $this->render("register", compact("user", "profile", "permissoes", "macroauthitems", "permissoesRegister")); }