protected Permission clonePermission(Permission permission, Role role) { Permission resultPermission = metadata.create(Permission.class); resultPermission.setValue(permission.getValue()); resultPermission.setType(permission.getType()); resultPermission.setTarget(permission.getTarget()); resultPermission.setRole(role); return resultPermission; }
protected void parseConfigFile(String fileName) { String fileContent = resources.getResourceAsString(fileName); if (!Strings.isNullOrEmpty(fileContent)) { Document document = Dom4j.readDocument(fileContent); List<Element> permissionElements = document.getRootElement().elements("permission"); for (Element element : permissionElements) { String target = element.attributeValue("target"); Integer value = Integer.valueOf(element.attributeValue("value")); Integer type = Integer.valueOf(element.attributeValue("type")); Permission permission = metadata.create(Permission.class); permission.setTarget(target); permission.setType(PermissionType.fromId(type)); permission.setValue(value); permissionValues.put(target, permission); } } else { log.error("File {} not found", fileName); } }
protected void compilePermissions(UserSession session, List<Role> roles) { for (Role role : roles) { if (RoleType.SUPER.equals(role.getType())) { // Don't waste memory, as the user with SUPER role has all permissions. return; } } for (Role role : roles) { for (Permission permission : role.getPermissions()) { PermissionType type = permission.getType(); if (type != null && permission.getValue() != null) { try { session.addPermission(type, permission.getTarget(), convertToExtendedEntityTarget(permission), permission.getValue()); } catch (Exception ignored) {} } } } defaultPermissionValuesConfig.getDefaultPermissionValues().forEach((target, permission) -> { if (session.getPermissionValue(permission.getType(), permission.getTarget()) == null) { session.addPermission(permission.getType(), permission.getTarget(), convertToExtendedEntityTarget(permission), permission.getValue()); } }); }
Permission permission = null; for (Permission p : ds.getItems()) { if (Objects.equals(p.getTarget(), permissionTarget)) { permission = p; break; p != null && Objects.equals(p.getTarget(), permissionTarget) ); if (permission != null) { newPermission.setRole(roleDs.getItem()); newPermission.setTarget(permissionTarget); newPermission.setType(type); newPermission.setValue(value); permission.setValue(value);
private void loadPermissionVariants(final MultiplePermissionTarget target) { for (Permission p : permissionDs.getItems()) { String permissionTargetString = p.getTarget(); if (StringUtils.isNotEmpty(permissionTargetString)) { int delimiterIndex = permissionTargetString.lastIndexOf(Permission.TARGET_PATH_DELIMETER); if (delimiterIndex >= 0) { String attribute = permissionTargetString.substring(delimiterIndex + 1); String permissionTarget = permissionTargetString.substring(0, delimiterIndex); if (Objects.equals(permissionTarget, target.getPermissionValue())) { target.assignPermissionVariant(attribute, getPermissionVariant(p)); } } } } }
private void loadPermissionVariant(BasicPermissionTarget target) { Permission permission = null; for (Permission p : permissionDs.getItems()) { if (Objects.equals(p.getTarget(), target.getPermissionValue())) { permission = p; break; } } if (permission != null) { if (permission.getValue() == PermissionValue.ALLOW.getValue()) target.setPermissionVariant(PermissionVariant.ALLOWED); else if (permission.getValue() == PermissionValue.DENY.getValue()) target.setPermissionVariant(PermissionVariant.DISALLOWED); } else { target.setPermissionVariant(PermissionVariant.NOTSET); } }
protected String convertToExtendedEntityTarget(Permission permission) { if (permission.getType() == PermissionType.ENTITY_OP || permission.getType() == PermissionType.ENTITY_ATTR) { String target = permission.getTarget(); int pos = target.indexOf(Permission.TARGET_PATH_DELIMETER); if (pos > -1) { String entityName = target.substring(0, pos); Class extendedClass = metadata.getExtendedEntities().getExtendedClass(metadata.getClassNN(entityName)); if (extendedClass != null) { MetaClass extMetaClass = metadata.getClassNN(extendedClass); return extMetaClass.getName() + Permission.TARGET_PATH_DELIMETER + target.substring(pos + 1); } } } return null; }
private AttributePermissionVariant getPermissionVariant(Permission permission) { if (permission.getValue() == PropertyPermissionValue.MODIFY.getValue()) return AttributePermissionVariant.MODIFY; else if (permission.getValue() == PropertyPermissionValue.VIEW.getValue()) return AttributePermissionVariant.READ_ONLY; else if (permission.getValue() == PropertyPermissionValue.DENY.getValue()) return AttributePermissionVariant.HIDE; else return AttributePermissionVariant.NOTSET; }
private void loadPermissionVariants(OperationPermissionTarget target) { for (Permission p : permissionDs.getItems()) { String permissionTargetString = p.getTarget(); if (StringUtils.isNotEmpty(permissionTargetString)) { int delimiterIndex = permissionTargetString.lastIndexOf(Permission.TARGET_PATH_DELIMETER); if (delimiterIndex >= 0) { String variant = permissionTargetString.substring(delimiterIndex + 1); String permissionTarget = permissionTargetString.substring(0, delimiterIndex); if (Objects.equals(permissionTarget, target.getPermissionValue())) { PermissionVariant permissionVariant = getPermissionVariant(p); if (EntityOp.CREATE.getId().equals(variant)) { target.setCreatePermissionVariant(permissionVariant); } else if (EntityOp.READ.getId().equals(variant)) { target.setReadPermissionVariant(permissionVariant); } else if (EntityOp.UPDATE.getId().equals(variant)) { target.setUpdatePermissionVariant(permissionVariant); } else if (EntityOp.DELETE.getId().equals(variant)) { target.setDeletePermissionVariant(permissionVariant); } } } } } }
private PermissionVariant getPermissionVariant(Permission permission) { if (permission.getValue() == PermissionValue.ALLOW.getValue()) return PermissionVariant.ALLOWED; else if (permission.getValue() == PermissionValue.DENY.getValue()) return PermissionVariant.DISALLOWED; else return PermissionVariant.NOTSET; }
@Override protected void loadData(Map<String, Object> params) { if (permissionDs == null) return; if (!data.isEmpty()) return; clear(); for (Permission p : permissionDs.getItems()) { String permissionTarget = p.getTarget(); if (StringUtils.isNotEmpty(permissionTarget)) { int delimiterIndex = permissionTarget.lastIndexOf(Permission.TARGET_PATH_DELIMETER); if (delimiterIndex >= 0) { String component = permissionTarget.substring(delimiterIndex + 1); String screen = permissionTarget.substring(0, delimiterIndex); UiPermissionVariant permissionVariant = getPermissionVariant(p); String permissionValue = screen + Permission.TARGET_PATH_DELIMETER + component; UiPermissionTarget target = new UiPermissionTarget("ui:" + permissionValue, permissionValue, permissionValue); target.setPermissionVariant(permissionVariant); target.setComponent(component); target.setScreen(screen); includeItem(target); } } } }
private UiPermissionVariant getPermissionVariant(Permission permission) { if (permission.getValue() == UiPermissionValue.READ_ONLY.getValue()) return UiPermissionVariant.READ_ONLY; else if (permission.getValue() == UiPermissionValue.HIDE.getValue()) return UiPermissionVariant.HIDE; else if (permission.getValue() == UiPermissionValue.SHOW.getValue()) return UiPermissionVariant.SHOW; else return UiPermissionVariant.NOTSET; }
protected void markItemPermission(UiPermissionVariant permissionVariant, UiPermissionTarget target) { if (target != null) { target.setPermissionVariant(permissionVariant); if (permissionVariant != UiPermissionVariant.NOTSET) { // Create permission int value = PermissionUiHelper.getPermissionValue(permissionVariant); PermissionUiHelper.createPermissionItem(uiPermissionsDs, roleDs, target.getPermissionValue(), PermissionType.UI, value); } else { // Remove permission Permission permission = null; for (Permission p : uiPermissionsDs.getItems()) { if (Objects.equals(p.getTarget(), target.getPermissionValue())) { permission = p; break; } } if (permission != null) uiPermissionsDs.removeItem(permission); } } }
public void markTargetPermission(AttributePermissionVariant permissionVariant) { if (!permissionApplicable(permissionVariant)) { return; } item.assignPermissionVariant(attributeName, permissionVariant); String permissionValue = item.getPermissionValue() + Permission.TARGET_PATH_DELIMETER + attributeName; if (permissionVariant != AttributePermissionVariant.NOTSET) { // Create permission int value = PermissionUiHelper.getPermissionValue(permissionVariant); PermissionUiHelper.createPermissionItem(propertyPermissionsDs, roleDs, permissionValue, PermissionType.ENTITY_ATTR, value); } else { // Remove permission Permission permission = null; for (Permission p : propertyPermissionsDs.getItems()) { if (Objects.equals(p.getTarget(), permissionValue)) { permission = p; break; } } if (permission != null) { propertyPermissionsDs.removeItem(permission); } } }
protected void markTargetPermission(OperationPermissionTarget target, String property, EntityOp operation, PermissionVariant permissionVariant) { if (target != null) { target.setValue(property, permissionVariant); String permissionValue = target.getPermissionValue() + Permission.TARGET_PATH_DELIMETER + operation.getId(); if (permissionVariant != PermissionVariant.NOTSET) { // Create permission int value = PermissionUiHelper.getPermissionValue(permissionVariant); PermissionUiHelper.createPermissionItem(entityPermissionsDs, roleDs, permissionValue, PermissionType.ENTITY_OP, value); } else { // Remove permission Permission permission = null; for (Permission p : entityPermissionsDs.getItems()) { if (Objects.equals(p.getTarget(), permissionValue)) { permission = p; break; } } if (permission != null) entityPermissionsDs.removeItem(permission); } } } }
protected void markItemPermission(PermissionVariant permissionVariant) { for (BasicPermissionTarget target : specificPermissionsTree.getSelected()) { if (!target.getId().startsWith(CATEGORY_PREFIX)) { target.setPermissionVariant(permissionVariant); if (permissionVariant != PermissionVariant.NOTSET) { // Create permission int value = PermissionUiHelper.getPermissionValue(permissionVariant); PermissionUiHelper.createPermissionItem(specificPermissionsDs, roleDs, target.getPermissionValue(), PermissionType.SPECIFIC, value); } else { // Remove permission Permission permission = null; for (Permission p : specificPermissionsDs.getItems()) { if (Objects.equals(p.getTarget(), target.getPermissionValue())) { permission = p; break; } } if (permission != null) { specificPermissionsDs.removeItem(permission); } } // trigger generated column update specificPermissionsTreeDs.updateItem(target); } } } }
protected void markItemPermission(PermissionVariant permissionVariant) { for (BasicPermissionTarget target : screenPermissionsTree.getSelected()) { target.setPermissionVariant(permissionVariant); if (permissionVariant != PermissionVariant.NOTSET) { // Create permission int value = PermissionUiHelper.getPermissionValue(permissionVariant); PermissionUiHelper.createPermissionItem(screenPermissionsDs, roleDs, target.getPermissionValue(), PermissionType.SCREEN, value); } else { // Remove permission Permission permission = null; for (Permission p : screenPermissionsDs.getItems()) { if (Objects.equals(p.getTarget(), target.getPermissionValue())) { permission = p; break; } } if (permission != null) { screenPermissionsDs.removeItem(permission); } } } // trigger generated column update screenPermissionsTree.repaint(); }