62 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Middleware;
 | |
| 
 | |
| use App\Providers\RouteServiceProvider;
 | |
| use Closure;
 | |
| use Illuminate\Http\Request;
 | |
| use Illuminate\Support\Str;
 | |
| use Symfony\Component\HttpFoundation\Response;
 | |
| 
 | |
| class DecideWhatToDoWithUser
 | |
| {
 | |
|     public function handle(Request $request, Closure $next): Response
 | |
|     {
 | |
|         if (auth()?->user()?->teams?->count() === 0) {
 | |
|             $currentTeam = auth()->user()?->recreate_personal_team();
 | |
|             refreshSession($currentTeam);
 | |
|         }
 | |
|         if (auth()?->user()?->currentTeam()) {
 | |
|             refreshSession(auth()->user()->currentTeam());
 | |
|         }
 | |
|         if (! auth()->user() || ! isCloud() || isInstanceAdmin()) {
 | |
|             if (! isCloud() && showBoarding() && ! in_array($request->path(), allowedPathsForBoardingAccounts())) {
 | |
|                 return redirect()->route('onboarding');
 | |
|             }
 | |
| 
 | |
|             return $next($request);
 | |
|         }
 | |
|         if (! auth()->user()->hasVerifiedEmail()) {
 | |
|             if ($request->path() === 'verify' || in_array($request->path(), allowedPathsForInvalidAccounts()) || $request->routeIs('verify.verify')) {
 | |
|                 return $next($request);
 | |
|             }
 | |
| 
 | |
|             return redirect()->route('verify.email');
 | |
|         }
 | |
|         if (! isSubscriptionActive() && ! isSubscriptionOnGracePeriod()) {
 | |
|             if (! in_array($request->path(), allowedPathsForUnsubscribedAccounts())) {
 | |
|                 if (Str::startsWith($request->path(), 'invitations')) {
 | |
|                     return $next($request);
 | |
|                 }
 | |
| 
 | |
|                 return redirect()->route('subscription.index');
 | |
|             }
 | |
|         }
 | |
|         if (showBoarding() && ! in_array($request->path(), allowedPathsForBoardingAccounts())) {
 | |
|             if (Str::startsWith($request->path(), 'invitations')) {
 | |
|                 return $next($request);
 | |
|             }
 | |
| 
 | |
|             return redirect()->route('onboarding');
 | |
|         }
 | |
|         if (auth()->user()->hasVerifiedEmail() && $request->path() === 'verify') {
 | |
|             return redirect(RouteServiceProvider::HOME);
 | |
|         }
 | |
|         if (isSubscriptionActive() && $request->routeIs('subscription.index')) {
 | |
|             return redirect(RouteServiceProvider::HOME);
 | |
|         }
 | |
| 
 | |
|         return $next($request);
 | |
|     }
 | |
| }
 | 
