41 lines
		
	
	
		
			974 B
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			41 lines
		
	
	
		
			974 B
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace BookStack\Console\Commands; | ||
|  | 
 | ||
|  | use BookStack\Users\Models\User; | ||
|  | use Exception; | ||
|  | use Illuminate\Console\Command; | ||
|  | 
 | ||
|  | /** | ||
|  |  * @mixin Command | ||
|  |  */ | ||
|  | trait HandlesSingleUser | ||
|  | { | ||
|  |     /** | ||
|  |      * Fetch a user provided to this command. | ||
|  |      * Expects the command to accept 'id' and 'email' options. | ||
|  |      * @throws Exception | ||
|  |      */ | ||
|  |     private function fetchProvidedUser(): User | ||
|  |     { | ||
|  |         $id = $this->option('id'); | ||
|  |         $email = $this->option('email'); | ||
|  |         if (!$id && !$email) { | ||
|  |             throw new Exception("Either a --id=<number> or --email=<email> option must be provided.\nRun this command with `--help` to show more options."); | ||
|  |         } | ||
|  | 
 | ||
|  |         $field = $id ? 'id' : 'email'; | ||
|  |         $value = $id ?: $email; | ||
|  | 
 | ||
|  |         $user = User::query() | ||
|  |             ->where($field, '=', $value) | ||
|  |             ->first(); | ||
|  | 
 | ||
|  |         if (!$user) { | ||
|  |             throw new Exception("A user where {$field}={$value} could not be found."); | ||
|  |         } | ||
|  | 
 | ||
|  |         return $user; | ||
|  |     } | ||
|  | } |