4747import hudson .model .AbstractItem ;
4848import hudson .model .Computer ;
4949import hudson .model .Descriptor ;
50- import hudson .model .Hudson ;
51- import hudson .model .Item ;
5250import hudson .model .Job ;
5351import hudson .model .Node ;
54- import hudson .model .Run ;
55- import hudson .model .View ;
56- import hudson .scm .SCM ;
5752import hudson .security .ACL ;
5853import hudson .security .AuthorizationStrategy ;
5954import hudson .security .Permission ;
@@ -1646,38 +1641,27 @@ private String getCurrentUser() {
16461641 @ Nullable
16471642 public List <PermissionGroup > getGroups (@ NonNull String type ) {
16481643 List <PermissionGroup > groups = new ArrayList <>();
1649- List < PermissionGroup > filterGroups = new ArrayList <>( PermissionGroup . getAll ()) ;
1644+ PermissionScope permissionScope ;
16501645 switch (type ) {
16511646 case GLOBAL :
1647+ permissionScope = PermissionScope .JENKINS ;
16521648 break ;
16531649 case PROJECT :
1654- filterGroups .remove (PermissionGroup .get (Hudson .class ));
1655- filterGroups .remove (PermissionGroup .get (Computer .class ));
1656-
1657- // RoleStrategy permissions
1658- filterGroups .remove (PermissionGroup .get (RoleBasedAuthorizationStrategy .class ));
1650+ permissionScope = PermissionScope .ITEM_GROUP ;
16591651 break ;
16601652 case SLAVE :
1661- filterGroups .remove (PermissionGroup .get (Permission .class ));
1662- filterGroups .remove (PermissionGroup .get (Hudson .class ));
1663- filterGroups .remove (PermissionGroup .get (View .class ));
1664-
1665- // RoleStrategy permissions
1666- filterGroups .remove (PermissionGroup .get (RoleBasedAuthorizationStrategy .class ));
1667-
1668- // Project, SCM and Run permissions
1669- filterGroups .remove (PermissionGroup .get (Item .class ));
1670- filterGroups .remove (PermissionGroup .get (SCM .class ));
1671- filterGroups .remove (PermissionGroup .get (Run .class ));
1653+ permissionScope = PermissionScope .COMPUTER ;
16721654 break ;
16731655 default :
1674- filterGroups = new ArrayList <>();
1675- break ;
1656+ return groups ;
16761657 }
1677- for (PermissionGroup group : filterGroups ) {
1658+ for (PermissionGroup group : PermissionGroup . getAll () ) {
16781659 if (group == PermissionGroup .get (Permission .class )) {
16791660 continue ;
16801661 }
1662+ if (!group .hasPermissionContainedBy (permissionScope )) {
1663+ continue ;
1664+ }
16811665 for (Permission p : group .getPermissions ()) {
16821666 if (p .getEnabled ()) {
16831667 groups .add (group );
@@ -1704,9 +1688,15 @@ public boolean showPermission(String type, Permission p) {
17041688 }
17051689 return p .getEnabled ();
17061690 case PROJECT :
1691+ if (!p .isContainedBy (PermissionScope .ITEM_GROUP )) {
1692+ return false ;
1693+ }
17071694 return p .getEnabled ();
17081695 case SLAVE :
1709- return p != Computer .CREATE && p .getEnabled ();
1696+ if (!p .isContainedBy (PermissionScope .COMPUTER )) {
1697+ return false ;
1698+ }
1699+ return p .getEnabled ();
17101700 default :
17111701 return false ;
17121702 }
0 commit comments