<?php
namespace App\PackagesAdmin\Middleware;
use Closure;
use App\PackagesAdmin\Manager\Exceptions\UnauthorizedException;

class PermissionMiddleware
{
    public function handle($request, Closure $next, $permission)
    {
        $have_access = false;

        $values = explode('|', $permission);

        foreach ($values as $value) {
            $value = trim($value);
            if (managerUser()->canAccess($value)) {
                $have_access = true;
                break;
            }
        }

        if ($have_access) {
            return $next($request);
        } else {
            throw UnauthorizedException::forPermissions();
        }
    }
}