CatchTokenFcmMiddleware.php 908 B

1234567891011121314151617181920212223242526272829303132333435
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Models\User;
  4. use Closure;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Cookie;
  7. use Symfony\Component\HttpFoundation\Response;
  8. class CatchTokenFcmMiddleware
  9. {
  10. /**
  11. * Handle an incoming request.
  12. *
  13. * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
  14. */
  15. public function handle(Request $request, Closure $next): Response
  16. {
  17. if (isset($request->token_fcm)) {
  18. $token = trim((string)$request->token_fcm);
  19. if ($token !== '' && auth()->check()) {
  20. User::assignUniqueFcmToken((int)auth()->id(), $token);
  21. }
  22. session(['token_fcm' => $token]);
  23. if ($token !== '') {
  24. Cookie::queue(Cookie::forever('token_fcm', $token));
  25. }
  26. }
  27. return $next($request);
  28. }
  29. }