providers)) { return Socialite::driver($provider)->redirect(); } return response("", 404); } public function callback($provider) { if(in_array($provider, $this->providers)) { $user = null; try { $user = Socialite::driver($provider)->user(); } catch(Exception $e) { return redirect('/register')->withErrors([ "message" => "Failed to login with " . $provider ]); } $email = $user->getEmail(); $name = $user->getName(); $username = $user->getNickname(); $user = User::where("email", $email)->first(); if(!$user) { $user = User::create([ 'name' => $name, 'email' => $email, 'username' => $username, 'password' => bcrypt(Str::Random(15)), 'email_verified_at' => Carbon::now() ]); } Auth::login($user); if (Auth::check()) return redirect('/'); } return response("", 404); } }