$input */ public function create(array $input): User { $this->validate($input); /** @var User $user */ $user = User::query()->create([ 'name' => $input['name'], 'email' => $input['email'], 'role' => $input['role'], 'password' => bcrypt($input['password']), 'timezone' => 'UTC', ]); return $user; } /** * @param array $input */ private function validate(array $input): void { Validator::make($input, self::rules())->validate(); } /** * @return array */ public static function rules(): array { return [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|min:8', 'role' => [ 'required', Rule::in([UserRole::ADMIN, UserRole::USER]), ], ]; } }