middleware('guest', ['except' => 'logout']); } protected function credentials(Request $request) { $result = $request->only($this->username(), 'password'); // Only allow activated users to login $result['is_activated'] = true; return $result; } /** * Show the application's login form. * * @return \Illuminate\Http\Response */ public function showLoginForm(Request $request) { return Theme::render('auth.v2_unified', [ 'active_tab' => 'login', 'info' => $request->session()->get('info') ]); } /** * Redirect the user to the Facebook authentication page. * * @return \Illuminate\Http\Response */ public function redirectToFacebook() { $socialite = $this->setSocialiteConfigs(); return $socialite->driver('facebook')->redirect(); } /** * Obtain the user information from Facebook. * * @return \Illuminate\Http\Response */ public function handleFacebookCallback(Request $request) { $socialite = $this->setSocialiteConfigs(); $facebookUser = $socialite->driver('facebook')->user(); $user = User::where('facebook_id', $facebookUser->id)->first(); if (is_null($user)) { $request->getSession()->put('registerData', [ 'name' => $facebookUser->name, 'email' => $facebookUser->email, 'facebook_id' => $facebookUser->id, 'is_activated' => true ]); return redirect(route('register')); } $this->guard()->login($user); return redirect(route('home')); } private function setSocialiteConfigs() { // Force Socialite to use our config from the database instead of hard-coded in config/services.php $socialite = app()->make('Laravel\Socialite\Contracts\Factory'); $socialite->extend( 'facebook', function ($app) use ($socialite) { $config = [ 'client_id' => UserConfig::get('facebook_app_id'), 'client_secret' => decrypt(UserConfig::get('facebook_app_secret')), 'redirect' => route('login_callback.facebook') ]; return $socialite->buildProvider(FacebookProvider::class, $config); } ); return $socialite; } }