Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
- Base: wintercms/winter branch 1.2 (full framework) - Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS - Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication - Partials: hero (offline-first), features, modes (offline/nube toggle), screenshots, pricing (3 planes), comparison, FAQ, CTA - Plugin VivesPOS.Site with ContactForm - Dockerfile: PHP 8.2 Apache, port 80, healthcheck - Added winter/wn-pages, blog, sitemap, seo plugins - Active theme set to vivespos
88 lines
2.7 KiB
PHP
88 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace Backend\Console;
|
|
|
|
use Backend\Models\User;
|
|
use Backend\Models\UserRole;
|
|
use Illuminate\Support\Facades\Config;
|
|
use Winter\Storm\Console\Command;
|
|
|
|
class UserCreate extends Command
|
|
{
|
|
use \Winter\Storm\Console\Traits\ConfirmsWithInput;
|
|
|
|
/**
|
|
* @var string The console command name.
|
|
*/
|
|
protected static $defaultName = 'user:create';
|
|
|
|
/**
|
|
* @var string The name and signature of this command.
|
|
*/
|
|
protected $signature = 'user:create email
|
|
{email : The email address of the user to create.}
|
|
{--password= : The password for the user.}
|
|
{--fname= : The first name of the user.}
|
|
{--lname= : The last name of the user.}
|
|
{--role= : The role to assign the user to. <info>Use the role\'s code</info>}
|
|
{--f|force : Force the operation to run and ignore production warnings and confirmation questions.}';
|
|
|
|
/**
|
|
* @var string The console command description.
|
|
*/
|
|
protected $description = 'Creates a backend user.';
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*/
|
|
public function handle(): int
|
|
{
|
|
$email = $this->argument('email');
|
|
|
|
if (
|
|
Config::get('app.env', 'production') !== 'local'
|
|
&& !$this->option('force')
|
|
&& !$this->confirmWithInput("CAUTION, currently working with non-local data. Please confirm the user email address", $email)
|
|
) {
|
|
return 1;
|
|
}
|
|
|
|
if (User::where('email', $email)->exists()) {
|
|
$this->error('A user with that email already exists.');
|
|
return 1;
|
|
}
|
|
|
|
$data = [
|
|
'email' => $email,
|
|
'password' => $this->option('password') ?: $this->secret('Password'),
|
|
'first_name' => $this->option('fname') ?: $this->ask('First name', ''),
|
|
'last_name' => $this->option('lname') ?: $this->ask('Last name', ''),
|
|
'role_id' => (
|
|
UserRole::where(
|
|
'code',
|
|
$this->option('role') ?: $this->choice(
|
|
'Role',
|
|
UserRole::lists('name', 'code')
|
|
)
|
|
)->firstOrFail()
|
|
)->id,
|
|
];
|
|
|
|
$data['password_confirmation'] = $data['password'];
|
|
|
|
$user = User::create([
|
|
'first_name' => $data['first_name'],
|
|
'last_name' => $data['last_name'],
|
|
'login' => $data['email'],
|
|
'email' => $data['email'],
|
|
'role_id' => $data['role_id'],
|
|
'password' => $data['password'],
|
|
'password_confirmation' => $data['password'],
|
|
]);
|
|
|
|
$this->info("User {$user->email} created successfully with the {$role->name} role.");
|
|
|
|
return 0;
|
|
}
|
|
}
|