userRepo = $userRepo; parent::__construct(); } /** * Execute the console command. * * @return mixed * @throws \BookStack\Exceptions\NotFoundException */ public function handle() { $email = trim($this->option('email')); if (empty($email)) { $email = $this->ask('Please specify an email address for the new admin user'); } if (strlen($email) < 5 || !filter_var($email, FILTER_VALIDATE_EMAIL)) { return $this->error('Invalid email address provided'); } if ($this->userRepo->getByEmail($email) !== null) { return $this->error('A user with the provided email already exists!'); } $name = trim($this->option('name')); if (empty($name)) { $name = $this->ask('Please specify an name for the new admin user'); } if (strlen($name) < 2) { return $this->error('Invalid name provided'); } $password = trim($this->option('password')); if (empty($password)) { $password = $this->secret('Please specify a password for the new admin user'); } if (strlen($password) < 5) { return $this->error('Invalid password provided, Must be at least 5 characters'); } $user = $this->userRepo->create(['email' => $email, 'name' => $name, 'password' => $password]); $this->userRepo->attachSystemRole($user, 'admin'); $this->userRepo->downloadGravatarToUserAvatar($user); $user->email_confirmed = true; $user->save(); $this->info("Admin account with email \"{$user->email}\" successfully created!"); } }