SocialiteController.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\Facades\Settings;
  4. use App\Http\Controllers\Controller;
  5. use App\Models\User;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Carbon;
  8. use Illuminate\Support\Facades\Auth;
  9. use Illuminate\Support\Str;
  10. use Laravel\Socialite\Facades\Socialite;
  11. class SocialiteController extends Controller
  12. {
  13. public function redirect(Request $request, $driver)
  14. {
  15. return Socialite::driver($driver)->redirect();
  16. }
  17. public function callback(Request $request, $driver)
  18. {
  19. $socialiteUser = Socialite::driver($driver)->user();
  20. /** @var User $user */
  21. $user = User::firstOrNew([
  22. 'email' => $socialiteUser->getEmail(),
  23. ], [
  24. 'name' => $socialiteUser->getName(),
  25. 'password' => bcrypt(Str::random()),
  26. ]);
  27. if (!$user->exists && Settings::get('disableRegistrationSso')) {
  28. return response(401);
  29. }
  30. $user->last_seen_at = Carbon::now()->format('Y-m-d H:i:s');
  31. $user->save();
  32. Auth::guard()->login($user, true);
  33. return redirect('/accounts?authenticated');
  34. }
  35. }