Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. <?php
  2.  
  3. namespace AppHttpControllersAuth;
  4.  
  5. use AppHttpControllersController;
  6. use AppUser;
  7. use IlluminateSupportFacadesAuth;
  8. use LaravelSocialiteFacadesSocialite;
  9.  
  10. class AuthController extends Controller
  11. {
  12. /**
  13. * Where to redirect users after login.
  14. *
  15. * @var string
  16. */
  17. protected $redirectPath = '/home';
  18.  
  19. /**
  20. * Redirect user to OAuth Provider.
  21. *
  22. * @param $provider
  23. * @return Response
  24. */
  25. public function redirectToProvider($provider)
  26. {
  27. return Socialite::driver($provider)->redirect();
  28. }
  29.  
  30. /**
  31. * Obtain the user information from provider. check if user already
  32. * exists in our db by looking up their provider_id in the db.
  33. * If user exists, log them in. Otherwise, create a new user then log them in.
  34. * After login, redirect them to the authenticated users homepage.
  35. *
  36. * @param $provider
  37. * @return Response
  38. */
  39. public function handleProviderCallback($provider)
  40. {
  41. try {
  42. $user = Socialite::driver($provider)->user();
  43. } catch (Exception $e) {
  44. return redirect("auth/$provider");
  45. }
  46. $authUser = $this->findOrCreateUser($user, $provider);
  47. Auth::login($authUser, true);
  48.  
  49. return redirect($this->redirectPath);
  50. }
  51.  
  52. /**
  53. * If a user has registered before using social auth, return the user
  54. * else, create a new user object.
  55. *
  56. * @param $user Socialite user object
  57. * @param $provider Social auth provider
  58. * @return User
  59. */
  60. public function findOrCreateUser($user, $provider)
  61. {
  62. $authUser = User::where('provider_id', $user->id)->first();
  63. if ($authUser) {
  64. return $authUser;
  65. }
  66.  
  67. return User::create([
  68. 'name' => $user->name,
  69. 'handle' => $user->nickname,
  70. 'provider' => $provider,
  71. 'provider_id' => $user->id,
  72. 'avatar' => $user->avatar_original,
  73. ]);
  74. }
  75.  
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement