diff --git a/src/app/Console/Commands/UserCreate.php b/src/app/Console/Commands/UserCreate.php new file mode 100644 index 0000000..20463ec --- /dev/null +++ b/src/app/Console/Commands/UserCreate.php @@ -0,0 +1,85 @@ +validateAsk('Введите имя пользователя', ['string|max:255']); + + if ($this->confirm('Хотите создать пользователя со случайным паролем?')) { + $password = Str::random(8); + $this->info('Созданный пароль: ' . $password); + } else { + $password = $this->validateAsk('Введите пароль', ['string|min:8']); + } + + $email = $this->validateAsk('Введите email', ['email']); + + User::create([ + 'name' => $username, + 'email' => $email, + 'password' => bcrypt($password), + 'email_verified_at' => Carbon::now(), + 'role_uuid' => Role::where('code', 'user')->value('uuid'), + ]); + + $this->info('Пользователь создан!'); + } + + private function validateAsk(string $question, array $rules, bool $isSecret = false) + { + if ($isSecret) { + $value = $this->secret($question); + } else { + $value = $this->ask($question); + } + + $validate = $this->validateInput($rules, $value); + + if ($validate !== true) { + $this->error($validate); + $value = $this->validateAsk($question, $rules); + } + + return $value; + } + + private function validateInput($rules, $value) + { + $validator = Validator::make([key($rules) => $value], $rules); + + if ($validator->fails()) { + return $validator->errors()->first(key($rules)); + } + + return true; + } +} diff --git a/src/resources/views/dashboard.blade.php b/src/resources/views/dashboard.blade.php index 221d3c7..fdd696e 100644 --- a/src/resources/views/dashboard.blade.php +++ b/src/resources/views/dashboard.blade.php @@ -5,6 +5,6 @@
@csrf - +
@endsection \ No newline at end of file