%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/user/commands/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/user/commands/UserController.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2020 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\user\commands; use humhub\modules\admin\models\forms\UserDeleteForm; use humhub\modules\space\helpers\MembershipHelper; use yii\console\Controller; use yii\console\ExitCode; use humhub\modules\user\models\User; use humhub\modules\user\models\Profile; use humhub\modules\user\models\Password; use humhub\modules\user\models\Group; /** * Console User Management * * Example usage: * php yii user/create "john.doe" "jd@example.com" "John" "Doe" * php yii user/set-password "john.doe" "secret" * php yii user/make-admin "john.doe" * * @since 1.7 * @author Luke * @author Michael Riedmann * @author Mathieu Brunot */ class UserController extends Controller { /** * @var boolean True - Hard Delete, error if Space Owner */ public $full; /** * @var boolean True - Hard Delete including owned Spaces */ public $force; public function options($actionID) { if ($actionID == 'delete') { return ['full', 'force']; } return []; } /** * Creates a new user account. */ public function actionCreate(string $userName, string $email, string $firstName, string $lastName) { $user = new User(); $user->scenario = User::SCENARIO_EDIT_ADMIN; $user->load(['username' => $userName, 'email' => $email], ''); $user->validate(); $profile = new Profile(); $profile->scenario = Profile::SCENARIO_EDIT_ADMIN; $profile->load(['firstname' => $firstName, 'lastname' => $lastName], ''); $profile->validate(); if ($user->hasErrors() || $profile->hasErrors()) { $this->stderr("Could not create user!\n\n"); $this->stderr("Validation errors:\n"); print_r($user->getErrors()); print_r($profile->getErrors()); return ExitCode::UNSPECIFIED_ERROR; } if ($user->save()) { $profile->user_id = $user->id; if ($profile->save()) { $this->stdout('User with ID ' . $user->id . ' successfully created!'); return ExitCode::OK; } } $this->stderr("Could not create user!\n\n"); return ExitCode::UNSPECIFIED_ERROR; } /** * Sets the password for an user account. */ public function actionSetPassword(string $username, string $password) { $user = $this->getUser($username); if (!$user) { return ExitCode::UNSPECIFIED_ERROR; } $passwordModel = new Password(); $passwordModel->user_id = $user->id; $passwordModel->setPassword($password); $passwordModel->save(); $this->stdout("Password for user with ID " . $user->id . " successfully created!\n\n"); return ExitCode::OK; } /** * Add user to the admin group. */ public function actionMakeAdmin(string $username) { $user = $this->getUser($username); if (!$user) { return ExitCode::UNSPECIFIED_ERROR; } Group::getAdminGroup()->addUser($user); $this->stdout("User with ID " . $user->id . " successfully added to the administrator group!\n\n"); return ExitCode::OK; } /** * Delete a user account. */ public function actionDelete(string $username) { $user = $this->getUser($username); if (!$user) { return ExitCode::UNSPECIFIED_ERROR; } $model = new UserDeleteForm(['user' => $user]); if ($this->full) { // Delete all contributions of the user $model->deleteContributions = true; if ($this->force) { // Delete all spaces which are owned by the user $model->deleteSpaces = true; } elseif (count(MembershipHelper::getOwnSpaces($user)) !== 0) { $this->stderr("Could not delete user which is owner of Spaces! (Use --force option to delete its space as well.)\n\n"); return ExitCode::UNSPECIFIED_ERROR; } } if (!$model->performDelete()) { $this->stderr("Could not delete user!\n\n"); return ExitCode::UNSPECIFIED_ERROR; } $this->stdout("User with ID " . $user->id . " deletion process queued!\n\n"); return ExitCode::OK; } private function getUser(string $username) { /** @var User $user */ $user = User::find()->where(['username' => $username])->one(); if ($user === null) { $this->stderr("Could not find user!\n\n"); return false; } return $user; } }