当前位置: 首页>>代码示例>>PHP>>正文


PHP Group::permissions方法代码示例

本文整理汇总了PHP中app\Group::permissions方法的典型用法代码示例。如果您正苦于以下问题:PHP Group::permissions方法的具体用法?PHP Group::permissions怎么用?PHP Group::permissions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在app\Group的用法示例。


在下文中一共展示了Group::permissions方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: handle

 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next, $role = '')
 {
     // Check if a user is logged in.
     if (!($user = $request->user())) {
         return $next($request);
     }
     $group = new \App\Group();
     // Get the current route.
     $route = $request->route();
     // Get the current route actions.
     $actions = $route->getAction();
     //dd($actions);
     //save the destination path
     $this->path = $actions['as'];
     /* Check if we have any permissions to check the user has. 
      * Check if are NOT set permissions AND permissionsDetailed
      * OR
      * check if is set permissionsDetailed AND if the actual destination
      * have a permission to check
      * */
     if (!($permissions = isset($actions['permissions']) ? $actions['permissions'] : null) && !($permissionsDetailed = isset($actions['permissionsDetailed']) ? $actions['permissionsDetailed'] : null) || ($permissionsDetailed = isset($actions['permissionsDetailed']) ? $actions['permissionsDetailed'] : null) && count(array_where((array) $permissionsDetailed, function ($key, $value) {
         return $key == $this->path;
     })) == 0) {
         // No permissions to check, allow access.
         return $next($request);
     }
     /*if we have a detailed permisison, we need to gather them in the 
      * $permissions array 
      * */
     if (isset($permissionsDetailed)) {
         $permissions = (array) $permissions;
         array_push($permissions, $permissionsDetailed[$actions['as']]);
         $permissions = array_flatten(array_filter($permissions));
     }
     // Fetch all of the matching user permissions.
     $userPermissions = array_fetch($user->permissions()->whereIn('slug', (array) $permissions)->get()->toArray(), 'slug');
     //Also look if the user has a group that have permissions
     $userId = $user->id;
     $userGroups = array_pluck($user->groups()->get()->toArray(), 'id');
     // Fetch all of the matching group permissions.
     $groupPermissions = array();
     foreach ($userGroups as $ug) {
         $group->id = $ug;
         $groupPermission = array_fetch($group->permissions()->whereIn('slug', (array) $permissions)->get()->toArray(), 'slug');
         $groupPermissions = array_merge($groupPermissions, $groupPermission);
     }
     // Turn the permissions we require into an array. Even if was made before
     $permissions = (array) $permissions;
     // Check if we require all permissions, or just one.
     if (isset($actions['permissions_require_all'])) {
         // If user has EVERY permission required.
         if (count($permissions) == count($userPermissions) || count($permissions) == count($groupPermissions)) {
             // Access is granted.
             return $next($request);
         }
     } else {
         // If the user has the permission.
         if (count($userPermissions) >= 1 || count($groupPermissions) >= 1) {
             // Access is granted and the rest of the permissions are ignored.
             return $next($request);
         }
     }
     // If we reach this far, the user does not have the required permissions.
     return App::abort(403, 'Access denied');
 }
开发者ID:adielseffrin,项目名称:CMS,代码行数:72,代码来源:PermissionsRequiredMiddleware.php


注:本文中的app\Group::permissions方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。