/**
  * Run the request filter.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $route = \Route::getCurrentRoute();
     // $route->uri(), $request->path()
     $roles = \Auth::user()->roles;
     $allow = true;
     try {
         // Check if route has permission
         foreach ($roles as $role) {
             foreach ($role->permissions as $permission) {
                 $allow = $allow & !$this->denied($request, $route, $permission);
             }
         }
     } catch (\Exception $e) {
         \Log::error($e->getFile() . ':' . $e->getLine() . ' ' . $e->getMessage());
         $allow = false;
     }
     // Apply access
     \Log::info('ACCESS:' . \Auth::user()->name . ':' . $request->method() . ':' . $request->path() . ':' . ($allow ? 'ALLOWED' : 'DENIED'));
     if (!$allow) {
         if ($request->ajax()) {
             return response('Unauthorized.', 401);
         } else {
             return response(view('admin/unauthorized'), 401);
         }
     } else {
         return $next($request);
     }
 }
Example #2
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $pass = $this->auth->check() ? true : false;
     $currentRoute = \Route::getCurrentRoute()->getPath();
     if (strpos($currentRoute, '[')) {
         $currentRoute = preg_split('/[[]/', $currentRoute)[0];
     }
     if (strpos($currentRoute, ':')) {
         $currentRoute = preg_split('/[:]/', $currentRoute)[0];
     }
     if (substr($currentRoute, -1) == 's') {
         $currentRoute = substr($currentRoute, 0, -1);
     }
     $currentRoute = \Route::getCurrentRoute()->getPath() == "admin/users[edit:show]" ? "admin/users[edit:show]" : $currentRoute;
     //echo $currentRoute;
     if ($pass) {
         $pass = false;
         $role = DB::table('roles')->get();
         foreach ($role as $rolerS) {
             if (User::find($this->auth->user()->id)->hasRole($rolerS->name) == 1) {
                 $userRole = $rolerS->name;
                 $role_id = $rolerS->id;
             }
         }
         $resultPermission = DB::table('permissions')->join('permission_role', 'permission_role.permission_id', '=', 'permissions.id')->join('roles', 'roles.id', '=', 'permission_role.role_id')->join('modules', 'modules.id', '=', 'permissions.action')->select('permission_role.permission_id as pID', 'permission_role.role_id as rID', 'roles.display_name as role_dn', 'permissions.name as per_name', 'permissions.display_name as per_dn', 'permissions.action as action', 'permissions.access as access', "modules.route as module_name", 'modules.id as mID')->where('permissions.type', 'module')->where('roles.id', $role_id)->get();
         //->toSql();;
         foreach ($resultPermission as $rsP) {
             //echo $currentRoute . " = " . $rsP->module_name . " is " . ($currentRoute==$rsP->module_name) ."||";
             if ($currentRoute == $rsP->module_name) {
                 $pass = true;
             }
             if ($currentRoute == "admin/form" || $currentRoute == "admin/filesList/{id}" || $currentRoute == "admin/setGrid") {
                 $pass = true;
             }
         }
     }
     if (!$pass) {
         return redirect('unauthorized')->with('errors', 'Maaf anda harus login terlebih dahulu');
     }
     return $next($request);
 }
Example #3
0
 public function handle($request, Closure $next)
 {
     $this->filter(\Route::getCurrentRoute(), $request);
     return $next($request);
 }