Martin Mucha has posted comments on this change. Change subject: core: added user permissions to macPools ......................................................................
Patch Set 4: (13 comments) http://gerrit.ovirt.org/#/c/29846/4/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PredefinedRoles.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PredefinedRoles.java: Line 27: TAG_ADMIN(new Guid("DEF00011-0000-0000-0000-DEF000000013")), Line 28: BOOKMARK_ADMIN(new Guid("DEF00011-0000-0000-0000-DEF000000014")), Line 29: EVENT_NOTIFICATION_ADMIN(new Guid("DEF00011-0000-0000-0000-DEF000000015")), Line 30: Line 31: //TODO MM: there maybe is some rule how to for these GUIDs, verify. > i think that they just need to be unique in this context. TODO removed Line 32: MAC_POOL_ADMIN(new Guid("DEF00013-0000-0000-0000-DEF000000013")), Line 33: MAC_POOL_USER(new Guid("DEF00014-0000-0000-0000-DEF000000014")); Line 34: Line 35: private Guid id; http://gerrit.ovirt.org/#/c/29846/4/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java: Line 70: Line 71: @Override Line 72: public List<PermissionSubject> getPermissionCheckSubjects() { Line 73: //TODO MM: can this be done better? Line 74: validateInputs(); > as stated before - validateInputs() is no good here.e yes, I've proposed modification of this method in previous comments. This should be done, since double validation is nonsense. And you're right about doing rather double/validation instead of calling validate, since odds for this refactoring aren't probably good :) Line 75: return Collections.singletonList(new PermissionSubject(getMacPoolId(), Line 76: VdcObjectType.MacPool, Line 77: ActionGroup.DELETE_MAC_POOL)); Line 78: } http://gerrit.ovirt.org/#/c/29846/4/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java: Line 74: Line 75: @Override Line 76: public List<PermissionSubject> getPermissionCheckSubjects() { Line 77: //TODO MM: can this be done better? Line 78: validateInputs(); > samed as previous comment. Done Line 79: return Collections.singletonList(new PermissionSubject(getMacPoolId(), Line 80: VdcObjectType.MacPool, Line 81: ActionGroup.EDIT_MAC_POOL)); Line 82: } http://gerrit.ovirt.org/#/c/29846/4/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java: Line 99: } Line 100: Line 101: @Override Line 102: public List<PermissionSubject> getPermissionCheckSubjects() { Line 103: validateInputs(); > same. Done Line 104: return Arrays.asList( Line 105: new PermissionSubject(Guid.SYSTEM, VdcObjectType.System, getActionType().getActionGroup()), Line 106: new PermissionSubject(getRequestedMacPoolId(), VdcObjectType.MacPool, ActionGroup.CONFIGURE_MAC_POOL) Line 107: ); http://gerrit.ovirt.org/#/c/29846/4/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolManagementCommandBase.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolManagementCommandBase.java: Line 53: return (sps == null || sps.isEmpty()); Line 54: } Line 55: Line 56: protected Guid getRequestedMacPoolId() { Line 57: return getParameters().getStoragePool().getMacPoolId(); > this should be NPE safe. I'll remove this, due to problem with calling validation. This methods is too far from invoking second validation. Line 58: } http://gerrit.ovirt.org/#/c/29846/4/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java: Line 306: private Guid getOldMacPoolId() { Line 307: return get_oldStoragePool().getMacPoolId(); Line 308: } Line 309: Line 310: private StoragePool get_oldStoragePool() { > please use a proper naming convention. this *shit* is already in code base, I'm just "using it". When someone named field "_oldStoragePool" and I just need to create getter for it, I need to name it properly and that's indeed "get_oldStoragePool". I cannot refactor it's name in this patchset, since other reviewers would torn me to pieces. I'll do it in following patchset, ok? Line 311: if (_oldStoragePool == null) { Line 312: _oldStoragePool = getStoragePoolDAO().get(getStoragePool().getId()); Line 313: } Line 314: return _oldStoragePool; Line 309: Line 310: private StoragePool get_oldStoragePool() { Line 311: if (_oldStoragePool == null) { Line 312: _oldStoragePool = getStoragePoolDAO().get(getStoragePool().getId()); Line 313: } > please add a space line Done Line 314: return _oldStoragePool; Line 315: } Line 316: Line 317: @Override Line 318: public List<PermissionSubject> getPermissionCheckSubjects() { Line 319: final List<PermissionSubject> result = new ArrayList<>(super.getPermissionCheckSubjects()); Line 320: Line 321: final boolean changingPoolDefinition = getRequestedMacPoolId().equals(getOldMacPoolId()); Line 322: if (changingPoolDefinition) { > getRequestedMacPoolId() might be null. after changes, when user passes wrong input, Guid.Empty is used, so even if validate method would fail (for some reason) this method will return permissions which will not authorize user anything ~~ i.e. rather than returning empty list, which would grant privileges to user, 'disallowing' permissions is returned. This also fixes possibility of requestedMacPoolId being null. Line 323: result.add(new PermissionSubject(getRequestedMacPoolId(), VdcObjectType.MacPool, ActionGroup.CONFIGURE_MAC_POOL)); Line 324: } Line 325: Line 326: return result; http://gerrit.ovirt.org/#/c/29846/4/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/PermitType.java File backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/PermitType.java: Line 119: Line 120: // Mac Pool action groups Line 121: CREATE_MAC_POOL, Line 122: EDIT_MAC_POOL, Line 123: DELETE_MAC_POOL; > CONFIGURE_MAC_POOL ? Done Line 124: Line 125: public String value() { Line 126: return name().toLowerCase(); Line 127: } http://gerrit.ovirt.org/#/c/29846/4/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermitMapper.java File backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermitMapper.java: Line 196: return PermitType.CREATE_MAC_POOL; Line 197: case EDIT_MAC_POOL: Line 198: return PermitType.EDIT_MAC_POOL; Line 199: case DELETE_MAC_POOL: Line 200: return PermitType.DELETE_MAC_POOL; > what about CONFIGURE_MAC_POOL ? Done Line 201: default: Line 202: return null; Line 203: } Line 204: } Line 352: return ActionGroup.EVENT_NOTIFICATION_MANAGEMENT; Line 353: case MANIPULATE_AFFINITY_GROUPS: Line 354: return ActionGroup.MANIPULATE_AFFINITY_GROUPS; Line 355: case ADD_USERS_AND_GROUPS_FROM_DIRECTORY: Line 356: return ActionGroup.ADD_USERS_AND_GROUPS_FROM_DIRECTORY; > same here ? Done Line 357: case CREATE_MAC_POOL: Line 358: return ActionGroup.CREATE_MAC_POOL; Line 359: case EDIT_MAC_POOL: Line 360: return ActionGroup.EDIT_MAC_POOL; http://gerrit.ovirt.org/#/c/29846/4/packaging/dbscripts/upgrade/03_05_0760_add_permissions_to_mac_pools.sql File packaging/dbscripts/upgrade/03_05_0760_add_permissions_to_mac_pools.sql: Line 33: --TODO should be readonly true or false? Line 34: INSERT INTO roles (id, Line 35: name, Line 36: description, Line 37: is_readonly, > it should be readonly since it is predefined role. TODO removed. Line 38: role_type, Line 39: allows_viewing_children, Line 40: app_mode) Line 41: SELECT Line 65: Line 66: INSERT INTO roles_groups (role_id, action_group_id) VALUES (v_MAC_POOL_ADMIN, v_CREATE_MAC_POOL); Line 67: INSERT INTO roles_groups (role_id, action_group_id) VALUES (v_MAC_POOL_ADMIN, v_EDIT_MAC_POOL); Line 68: INSERT INTO roles_groups (role_id, action_group_id) VALUES (v_MAC_POOL_ADMIN, v_DELETE_MAC_POOL); Line 69: INSERT INTO roles_groups (role_id, action_group_id) VALUES (v_MAC_POOL_ADMIN, v_LOGIN); > Please add: Done Line 70: Line 71: INSERT INTO roles_groups (role_id, action_group_id) VALUES (v_MAC_POOL_USER, v_CONFIGURE_MAC_POOL); Line 72: INSERT INTO roles_groups (role_id, action_group_id) VALUES (v_MAC_POOL_USER, v_LOGIN); Line 73: -- To view, visit http://gerrit.ovirt.org/29846 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1f5d080b6628f86ab2ff88f8e2dfaab21d367c7f Gerrit-PatchSet: 4 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Mucha <mmu...@redhat.com> Gerrit-Reviewer: Lior Vernia <lver...@redhat.com> Gerrit-Reviewer: Martin Mucha <mmu...@redhat.com> Gerrit-Reviewer: Moti Asayag <masa...@redhat.com> Gerrit-Reviewer: automat...@ovirt.org Gerrit-Reviewer: oVirt Jenkins CI Server Gerrit-HasComments: Yes _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches