%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/rest/controllers/user/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/rest/controllers/user/UserController.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2018 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\rest\controllers\user; use humhub\modules\admin\permissions\ManageUsers; use humhub\modules\rest\components\BaseController; use humhub\modules\rest\definitions\UserDefinitions; use humhub\modules\user\models\Password; use humhub\modules\user\models\Profile; use humhub\modules\user\models\User; use Yii; use yii\web\HttpException; /** * Class AccountController */ class UserController extends BaseController { /** * @inheritdoc */ public function getAccessRules() { return [ ['permissions' => [ManageUsers::class]], ]; } public function actionIndex() { $results = []; $query = User::find(); $pagination = $this->handlePagination($query); foreach ($query->all() as $user) { $results[] = UserDefinitions::getUser($user); } return $this->returnPagination($query, $pagination, $results); } /** * Get User by username * * @param string $username the username searched * @return UserDefinitions * @throws HttpException */ public function actionGetByUsername($username) { $user = User::findOne(['username' => $username]); if ($user === null) { return $this->returnError(404, 'User not found!'); } return $this->actionView($user->id); } /** * Get User by email * * @param string $email the email searched * @return UserDefinitions * @throws HttpException */ public function actionGetByEmail($email) { $user = User::findOne(['email' => $email]); if ($user === null) { return $this->returnError(404, 'User not found!'); } return $this->actionView($user->id); } public function actionView($id) { $user = User::findOne(['id' => $id]); if ($user === null) { return $this->returnError(404, 'User not found!'); } return UserDefinitions::getUser($user); } public function actionUpdate($id) { $user = User::findOne(['id' => $id]); if ($user === null) { return $this->returnError(404, 'User not found!'); } $user->scenario = 'editAdmin'; $userData = Yii::$app->request->getBodyParam("account", []); if (!empty($userData)) { $user->load($userData, ''); $user->validate(); } $profile = null; $profileData = Yii::$app->request->getBodyParam("profile", []); if (!empty($profileData)) { $profile = $user->profile; $profile->scenario = 'editAdmin'; $profile->load($profileData, ''); $profile->validate(); } $password = null; $passwordData = Yii::$app->request->getBodyParam("password", []); if (!empty($passwordData)) { $password = new Password(); $password->scenario = 'registration'; $password->load($passwordData, ''); $password->newPasswordConfirm = $password->newPassword; $password->validate(); } if ((!empty($userData) && $user->hasErrors()) || ($password !== null && $password->hasErrors()) || ($profile !== null && $profile->hasErrors()) ) { return $this->returnError(400, 'Validation failed', [ 'profile' => ($profile !== null) ? $profile->getErrors() : null, 'account' => $user->getErrors(), 'password' => ($password !== null) ? $password->getErrors() : null, ]); } if (!$user->save()) { return $this->returnError(500, 'Internal error while save user!'); } if ($profile !== null && !$profile->save()) { return $this->returnError(500, 'Internal error while save profile!'); } if ($password !== null) { $password->user_id = $user->id; $password->setPassword($password->newPassword); if (!$password->save()) { return $this->returnError(500, 'Internal error while save new password!'); } } return $this->actionView($user->id); } /** * * @return array * @throws HttpException */ public function actionCreate() { $user = new User(); $user->scenario = 'editAdmin'; $user->load(Yii::$app->request->getBodyParam("account", []), ''); $user->validate(); $profile = new Profile(); $profile->scenario = 'editAdmin'; $profile->load(Yii::$app->request->getBodyParam("profile", []), ''); $profile->validate(); $password = new Password(); $password->scenario = 'registration'; $password->load(Yii::$app->request->getBodyParam("password", []), ''); $password->newPasswordConfirm = $password->newPassword; $password->validate(); if ($user->hasErrors() || $password->hasErrors() || $profile->hasErrors()) { return $this->returnError(400, 'Validation failed', [ 'password' => $password->getErrors(), 'profile' => $profile->getErrors(), 'account' => $user->getErrors(), ]); } if ($user->save()) { $profile->user_id = $user->id; $password->user_id = $user->id; $password->setPassword($password->newPassword); if ($profile->save() && $password->save()) { if($password->mustChangePassword) { $user->setMustChangePassword(true); } return $this->actionView($user->id); } } Yii::error('Could not create validated user.', 'api'); return $this->returnError(500, 'Internal error while save user!'); } public function actionDelete($id) { $user = User::findOne(['id' => $id]); if ($user === null) { return $this->returnError(404, 'User not found!'); } if ($user->softDelete()) { return $this->returnSuccess('User successfully soft deleted!'); } return $this->returnError(500, 'Internal error while soft delete user!'); } public function actionHardDelete($id) { $user = User::findOne(['id' => $id]); if ($user === null) { return $this->returnError(404, 'User not found!'); } if ($user->delete()) { return $this->returnSuccess('User successfully deleted!'); } return $this->returnError(500, 'Internal error while soft delete user!'); } }