You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							108 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							108 lines
						
					
					
						
							2.7 KiB
						
					
					
				| <?php | |
| 
 | |
| namespace App\Console\Commands; | |
| 
 | |
| use Illuminate\Console\Command; | |
| use App\Models\User; | |
| 
 | |
| class UserCreate extends Command | |
| { | |
|     /** | |
|      * The name and signature of the console command. | |
|      * | |
|      * @var string | |
|      */ | |
|     protected $signature = 'user:create {--name=} {--username=} {--email=} {--password=} {--is_admin=0} {--confirm_email=0}'; | |
| 
 | |
|     /** | |
|      * The console command description. | |
|      * | |
|      * @var string | |
|      */ | |
|     protected $description = 'Create a new user'; | |
| 
 | |
|     /** | |
|      * Create a new command instance. | |
|      * | |
|      * @return void | |
|      */ | |
|     public function __construct() | |
|     { | |
|         parent::__construct(); | |
|     } | |
| 
 | |
|     /** | |
|      * Execute the console command. | |
|      * | |
|      * @return mixed | |
|      */ | |
|     public function handle() | |
|     { | |
|         $this->info('Creating a new user...'); | |
| 
 | |
|         $o = $this->options(); | |
| 
 | |
|         if( $o['name'] && | |
|             $o['username'] && | |
|             $o['email'] && | |
|             $o['password'] | |
|         ) { | |
|             $user = new User; | |
|             $user->username = $o['username']; | |
|             $user->name = $o['name']; | |
|             $user->email = $o['email']; | |
|             $user->password = bcrypt($o['password']); | |
|             $user->is_admin = (bool) $o['is_admin']; | |
|             $user->email_verified_at = (bool) $o['confirm_email'] ? now() : null; | |
|             $user->save(); | |
| 
 | |
|             $this->info('Successfully created user!'); | |
|             return; | |
|         } | |
| 
 | |
|         $name = $this->ask('Name'); | |
| 
 | |
|         $username = $this->ask('Username'); | |
| 
 | |
|         if(User::whereUsername($username)->exists()) { | |
|             $this->error('Username already in use, please try again...'); | |
|             exit; | |
|         } | |
| 
 | |
|         $email = $this->ask('Email'); | |
| 
 | |
|         if(User::whereEmail($email)->exists()) { | |
|             $this->error('Email already in use, please try again...'); | |
|             exit; | |
|         } | |
| 
 | |
|         $password = $this->secret('Password'); | |
|         $confirm = $this->secret('Confirm Password'); | |
| 
 | |
|         if($password !== $confirm) { | |
|             $this->error('Password mismatch, please try again...'); | |
|             exit; | |
|         } | |
|          | |
|         $is_admin = $this->confirm('Make this user an admin?'); | |
|         $confirm_email = $this->confirm('Manually verify email address?'); | |
| 
 | |
|         if($this->confirm('Are you sure you want to create this user?') &&  | |
|             $username && | |
|             $name &&  | |
|             $email &&  | |
|             $password | |
|         ) { | |
|             $user = new User; | |
|             $user->username = $username; | |
|             $user->name = $name; | |
|             $user->email = $email; | |
|             $user->password = bcrypt($password); | |
|             $user->is_admin = $is_admin; | |
|             $user->email_verified_at = $confirm_email ? now() : null; | |
|             $user->save(); | |
| 
 | |
|             $this->info('Created new user!'); | |
|         } | |
|     } | |
| }
 |