<?php

namespace App\Http\Middleware;
use Closure;
use Dcat\Admin\Admin;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

class DistAuth
{
    private  $excludeList = [
        '/auth/users',
        '/auth/roles',
        '/auth/permissions',
        '/auth/menu',
        '/auth/extensions',
        '/helpers/scaffold',
        '/helpers/icons',
    ];

    public function handle($request, Closure $next)
    {
        //如果用户非管理员角色,判断是否含以上URL,含有则触发404
        foreach ($this->excludeList as $item) {
            if (strpos($request->url(), $item) !== false) {
                if (!Admin::user()->isAdministrator()) {
                    throw new NotFoundHttpException; // 触发404
                }
            }
        }
        //判断是否登录,如果getDistributor不存在,则触发登录页面
        if (Admin::user()) {
            if (!getDistributor()) {
                if (strpos($request->url(), 'auth/logout') == false) {
                    // 存在时的逻辑
                    return redirect('/dist/auth/logout');
                }
            }
        }

        //否则继续处理当前请求
        return $next($request);

    }

}