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


PHP Permission::whereHas方法代码示例

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


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

示例1: show

 public function show($id)
 {
     if (Auth::user()->can('read-role')) {
         $data['role'] = Role::find($id);
         $data['title'] = "Role \"" . $data['role']->display_name . "\"";
         $data['menu_actions'] = [Form::editItem(route('roles.edit', $id), 'Edit This Role', Auth::user()->can('update-role'))];
         $permissions = Permission::get();
         $permissions_in_role = Permission::whereHas('roles', function ($q) use($id) {
             $q->where('roles.id', $id);
         })->get();
         $counter = 0;
         foreach ($permissions as $permission) {
             $is_in_role = false;
             foreach ($permissions_in_role as $permission_in_role) {
                 if ($permission->id == $permission_in_role->id) {
                     $is_in_role = true;
                 }
             }
             $data['permissions'][$counter] = $permission;
             $data['permissions'][$counter]['is_in_role'] = $is_in_role;
             $counter++;
         }
         return view('roles/show', $data);
     } else {
         return redirect()->back()->withErrors(['Access denied to roles show page']);
     }
 }
开发者ID:pinkynrg,项目名称:convergence2.0,代码行数:27,代码来源:RolesController.php

示例2: manageableRolesForUser

 private function manageableRolesForUser()
 {
     $roles = $this->roleResultToList(Role::with('perms')->get());
     if (Entrust::can(PermissionNames::ManageGlobalPermissions())) {
         return $roles;
     }
     //Filter out global permissions
     $roles = array_filter($roles, function ($r) {
         $globalPerms = PermissionNames::AllGlobalPermissions();
         foreach ($r->perms as $p) {
             if (in_array($p->name, $globalPerms)) {
                 return false;
             }
         }
         return true;
     });
     $confPermNamePart = PermissionNames::normalizePermissionName(PermissionNames::ConferencePermissionManagement(1));
     $evtPermNamePart = PermissionNames::normalizePermissionName(PermissionNames::EventPermissionManagement(1));
     //Get the permissions this user has which are permissions management
     //permissions
     $currentPermManagement = Permission::whereHas("roles", function ($query) {
         $query->whereHas("users", function ($query) {
             //on Account table
             $query->where("id", Auth::user()->id);
         });
     })->where(function ($query) use($confPermNamePart, $evtPermNamePart) {
         $query->where('name', 'like', $confPermNamePart . '%');
         $query->orWhere('name', 'like', $evtPermNamePart . '%');
     })->get();
     $conferences = [];
     $events = [];
     foreach ($currentPermManagement as $perm) {
         if (PermissionNames::isConferencePermission($perm->name)) {
             $conferences[] = PermissionNames::extractPermissionData($perm->name)->idPart;
         } else {
             $events[] = PermissionNames::extractPermissionData($perm->name)->idPart;
         }
     }
     $ownedEvents = Event::whereIn('conferenceID', $conferences)->select('id')->get();
     $ownedEvents = array_map(function ($e) {
         return $e['id'];
     }, $ownedEvents->toArray());
     $events = array_merge($events, $ownedEvents);
     //Filter out permissions not associated with the conferences/events
     //this user can control.
     $roles = array_filter($roles, function ($r) use($events, $conferences) {
         foreach ($r->perms as $p) {
             if (PermissionNames::isConferencePermission($p->name)) {
                 $confId = PermissionNames::extractPermissionData($p->name)->idPart;
                 if (!in_array($confId, $conferences)) {
                     return false;
                 }
             } else {
                 if (PermissionNames::isEventPermission($p->name)) {
                     $evtId = PermissionNames::extractPermissionData($p->name)->idPart;
                     if (!in_array($evtId, $events)) {
                         return false;
                     }
                 }
             }
             return true;
         }
     });
     return $roles;
 }
开发者ID:a161527,项目名称:cs319-p2t5,代码行数:65,代码来源:PermissionsController.php

示例3: buildPermissionsJson

 private function buildPermissionsJson()
 {
     $permissions = [];
     $this->checkPermission(PermissionNames::CreateConference(), $permissions);
     $this->checkPermission(PermissionNames::ManageGlobalPermissions(), $permissions);
     $this->checkPermission(PermissionNames::ApproveUserRegistration(), $permissions);
     $this->checkPermission(PermissionNames::ViewSiteStatistics(), $permissions);
     if (!is_null(Auth::user())) {
         $pnames = Permission::whereHas("roles", function ($query) {
             $query->whereHas("users", function ($query) {
                 $query->where("id", Auth::user()->id);
             });
         })->select("name")->get()->toArray();
         $pnames = array_map(function ($p) {
             return $p['name'];
         }, $pnames);
         $lookFor = PermissionNames::permissionManagementPermissionBases();
         foreach ($pnames as $permName) {
             $normal = PermissionNames::normalizePermissionName($permName);
             if (in_array($normal, $lookFor)) {
                 $permissions[] = "manage-some-permissions";
                 break;
             }
         }
     }
     return $permissions;
 }
开发者ID:a161527,项目名称:cs319-p2t5,代码行数:27,代码来源:AuthenticationController.php


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