airlineRepo = $airlineRepo; $this->airportRepo = $airportRepo; $this->userService = $userService; $this->middleware('guest'); } /** * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function showRegistrationForm() { $airports = $this->airportRepo->selectBoxList(false, true); $airlines = $this->airlineRepo->selectBoxList(); return view('auth.register', [ 'airports' => $airports, 'airlines' => $airlines, 'timezones' => Timezonelist::toArray(), ]); } /** * Get a validator for an incoming registration request. * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data) { $rules = [ 'name' => 'required|max:255', 'email' => 'required|email|max:255|unique:users', 'airline_id' => 'required', 'home_airport_id' => 'required', 'password' => 'required|min:5|confirmed', ]; if (config('captcha.enabled')) { $rules['g-recaptcha-response'] = 'required|captcha'; } return Validator::make($data, $rules); } /** * Get a validator for an incoming registration request. * @param array $data * @return User * @throws \RuntimeException * @throws \Exception */ protected function create(array $data) { $opts = [ 'name' => $data['name'], 'email' => $data['email'], 'api_key' => Utils::generateApiKey(), 'airline_id' => $data['airline_id'], 'home_airport_id' => $data['home_airport_id'], 'curr_airport_id' => $data['home_airport_id'], 'password' => Hash::make($data['password']) ]; $user = User::create($opts); $user = $this->userService->createPilot($user); Log::info('User registered: ', $user->toArray()); return $user; } /** * Handle a registration request for the application. * @param Request $request * @return mixed * @throws \Exception */ public function register(Request $request) { $rules = [ 'name' => 'required', 'email' => 'required|email|unique:users,email', 'airline_id' => 'required', 'home_airport_id' => 'required', 'password' => 'required|confirmed' ]; if(config('captcha.enabled')) { $rules['g-recaptcha-response'] = 'required|captcha'; } $this->validate(request(), $rules); $user = $this->create($request->all()); if($user->state === UserState::PENDING) { return view('auth.pending'); } $this->guard()->login($user); return redirect('/dashboard'); } }