<?php

namespace App\Http\Middleware;

use App\Models\RolePermission;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class ValidateSystemAccess
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next, $permissionAlias)
    {
        $user = Auth::user();

        $rolePermissions = RolePermission::where('role_id', $user->role_id)->with('permission')->get();

        $permissions = [];

        foreach ($rolePermissions as $rolePermission) {
            $permissions[] = $rolePermission->permission->alias;
        }

        if (in_array($permissionAlias, $permissions)) {
            return $next($request);
        }

        return redirect('/permission-denied');
    }
}
