<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class SubscriptionValid
{

    public function handle(Request $request, Closure $next): Response
    {
        if (auth()->user()) {
            if (is_cloud() && !isSubscribed()) {
                ray('SubscriptionValid Middleware');

                $allowed_paths = [
                    'subscription',
                    'login',
                    'register',
                    'logout',
                    'livewire/message/check-license',
                    'livewire/message/switch-team',
                ];
                if (!in_array($request->path(), $allowed_paths)) {
                    return redirect('subscription');
                } else {
                    return $next($request);
                }
            } else {
                if ($request->path() === 'subscription' && !auth()->user()->isInstanceAdmin()) {
                    return redirect('/');
                } else {
                    return $next($request);
                }
            }
        }
        return $next($request);
    }
}