@Override public ProvisioningResult<AnyObjectTO> delete(final String key, final boolean nullPriorityAsync) { AnyObjectTO anyObject = binder.getAnyObjectTO(key); Pair<AnyObjectTO, List<LogicActions>> before = beforeDelete(anyObject); Set<String> effectiveRealms = RealmUtils.getEffective( AuthContextUtils.getAuthorizations().get(AnyEntitlement.DELETE.getFor(before.getLeft().getType())), before.getLeft().getRealm()); securityChecks(effectiveRealms, before.getLeft().getRealm(), before.getLeft().getKey()); List<PropagationStatus> statuses = provisioningManager.delete(before.getLeft().getKey(), nullPriorityAsync); AnyObjectTO anyObjectTO = new AnyObjectTO(); anyObjectTO.setKey(before.getLeft().getKey()); return afterDelete(anyObjectTO, statuses, before.getRight()); }
@Override protected String getName(final AnyTO anyTO) { return AnyObjectTO.class.cast(anyTO).getName(); }
@Override public ProvisioningResult<AnyObjectTO> update( final AnyObjectPatch anyObjectPatch, final boolean nullPriorityAsync) { AnyObjectTO anyObjectTO = binder.getAnyObjectTO(anyObjectPatch.getKey()); Set<String> dynRealmsBefore = new HashSet<>(anyObjectTO.getDynRealms()); Pair<AnyObjectPatch, List<LogicActions>> before = beforeUpdate(anyObjectPatch, anyObjectTO.getRealm()); String realm = before.getLeft().getRealm() != null && StringUtils.isNotBlank(before.getLeft().getRealm().getValue()) ? before.getLeft().getRealm().getValue() : anyObjectTO.getRealm(); Set<String> effectiveRealms = RealmUtils.getEffective( AuthContextUtils.getAuthorizations().get(AnyEntitlement.UPDATE.getFor(anyObjectTO.getType())), realm); boolean authDynRealms = securityChecks(effectiveRealms, realm, before.getLeft().getKey()); Pair<AnyObjectPatch, List<PropagationStatus>> updated = provisioningManager.update(anyObjectPatch, nullPriorityAsync); return afterUpdate( binder.getAnyObjectTO(updated.getLeft().getKey()), updated.getRight(), before.getRight(), authDynRealms, dynRealmsBefore); }
public ProvisioningResult<AnyObjectTO> create(final AnyObjectTO anyObjectTO, final boolean nullPriorityAsync) { Pair<AnyObjectTO, List<LogicActions>> before = beforeCreate(anyObjectTO); if (before.getLeft().getRealm() == null) { throw SyncopeClientException.build(ClientExceptionType.InvalidRealm); } if (before.getLeft().getType() == null) { throw SyncopeClientException.build(ClientExceptionType.InvalidAnyType); } Set<String> effectiveRealms = RealmUtils.getEffective( AuthContextUtils.getAuthorizations().get(AnyEntitlement.CREATE.getFor(before.getLeft().getType())), before.getLeft().getRealm()); securityChecks(effectiveRealms, before.getLeft().getRealm(), null); Pair<String, List<PropagationStatus>> created = provisioningManager.create(before.getLeft(), nullPriorityAsync); return afterCreate(binder.getAnyObjectTO(created.getKey()), created.getRight(), before.getRight()); }
@Override public Response update(final AnyObjectTO anyObjectTO) { anyObjectTO.setKey(getActualKey(getAnyDAO(), anyObjectTO.getKey())); AnyObjectTO before = logic.read(anyObjectTO.getKey()); checkETag(before.getETagValue()); ProvisioningResult<AnyObjectTO> updated = logic.update(AnyOperations.diff(anyObjectTO, before, false), isNullPriorityAsync()); return modificationResponse(updated); }
@Override public AnyObjectTO getAnyObjectTO(final AnyObject anyObject, final boolean details) { AnyObjectTO anyObjectTO = new AnyObjectTO(); anyObjectTO.setKey(anyObject.getKey()); anyObjectTO.setName(anyObject.getName()); anyObjectTO.setType(anyObject.getType().getKey()); anyObjectTO.setCreationDate(anyObject.getCreationDate()); anyObjectTO.setCreator(anyObject.getCreator()); anyObjectTO.setLastChangeDate(anyObject.getLastChangeDate()); anyObjectTO.setLastModifier(anyObject.getLastModifier()); anyObjectTO.setStatus(anyObject.getStatus()); anyObjectTO.getDynRealms().addAll(userDAO.findDynRealms(anyObject.getKey())); anyObjectTO.getRelationships().addAll( anyObjectDAO.findAllRelationships(anyObject).stream(). map(relationship -> getRelationshipTO( anyObjectTO.getMemberships().addAll( anyObject.getMemberships().stream().map(membership -> { return getMembershipTO( anyObjectTO.getDynMemberships().addAll( anyObjectDAO.findDynGroups(anyObject.getKey()).stream().map(group -> { return new MembershipTO.Builder().
AnyObjectTO anyObjectTO = (AnyObjectTO) anyTO; anyObjectCR.setType(anyObjectTO.getType()); anyObjectCR.setName(anyObjectTO.getName()); anyObjectCR.getRelationships().addAll(anyObjectTO.getRelationships()); anyObjectCR.getMemberships().addAll(anyObjectTO.getMemberships());
@Override public ProvisioningResult<AnyObjectTO> deprovision( final String key, final Collection<String> resources, final boolean nullPriorityAsync) { // security checks AnyObjectTO anyObjectTO = binder.getAnyObjectTO(key); Set<String> effectiveRealms = RealmUtils.getEffective( AuthContextUtils.getAuthorizations().get(AnyEntitlement.UPDATE.getFor(anyObjectTO.getType())), anyObjectTO.getRealm()); securityChecks(effectiveRealms, anyObjectTO.getRealm(), anyObjectTO.getKey()); List<PropagationStatus> statuses = provisioningManager.deprovision(key, resources, nullPriorityAsync); ProvisioningResult<AnyObjectTO> result = new ProvisioningResult<>(); result.setEntity(binder.getAnyObjectTO(key)); result.getPropagationStatuses().addAll(statuses); return result; }
result.setName(replacePatchItem(updated.getName(), original.getName(), new StringReplacePatchItem())); EntityTOUtils.buildRelationshipMap(updated.getRelationships()); Map<Pair<String, String>, RelationshipTO> originalRels = EntityTOUtils.buildRelationshipMap(original.getRelationships()); Map<String, MembershipTO> updatedMembs = EntityTOUtils.buildMembershipMap(updated.getMemberships()); Map<String, MembershipTO> originalMembs = EntityTOUtils.buildMembershipMap(original.getMemberships());
AnyObjectCR anyObjectCR = (AnyObjectCR) anyCR; anyObjectTO.setType(anyObjectCR.getType()); anyObjectTO.setName(anyObjectCR.getName()); anyObjectTO.getRelationships().addAll(anyObjectCR.getRelationships()); anyObjectTO.getMemberships().addAll(anyObjectCR.getMemberships());
public AnyObjectTemplateWizardBuilder( final TemplatableTO templatable, final String anyType, final List<String> anyTypeClasses, final AnyObjectFormLayoutInfo formLayoutInfo, final PageReference pageRef) { super(null, anyTypeClasses, formLayoutInfo, pageRef); this.templatable = templatable; if (templatable.getTemplates().containsKey(anyType)) { setItem(new AnyWrapper<>(AnyObjectTO.class.cast(templatable.getTemplates().get(anyType)))); } else { AnyObjectTO anyObjectTO = new AnyObjectTO(); anyObjectTO.setType(anyType); if (templatable instanceof RealmTO) { anyObjectTO.setRealm(String.format("'%s'", RealmTO.class.cast(templatable).getFullPath())); } setItem(new AnyWrapper<>(anyObjectTO)); } }
result.setName(anyObjectPatch.getName().getValue()); LOG.warn("Invalid {} specified: {}", RelationshipPatch.class.getName(), relPatch); } else { result.getRelationships().remove(relPatch.getRelationshipTO()); if (relPatch.getOperation() == PatchOperation.ADD_REPLACE) { result.getRelationships().add(relPatch.getRelationshipTO()); LOG.warn("Invalid {} specified: {}", MembershipPatch.class.getName(), membPatch); } else { result.getMemberships().stream(). filter(membership -> membPatch.getGroup().equals(membership.getGroupKey())). findFirst().ifPresent(memb -> result.getMemberships().remove(memb)); result.getMemberships().add(newMembershipTO);
@Override protected Details<AnyObjectTO> addOptionalDetailsPanel(final AnyWrapper<AnyObjectTO> modelObject) { return new AnyObjectDetails( modelObject, mode == AjaxWizard.Mode.TEMPLATE, modelObject.getInnerObject().getKey() != null, pageRef); } }
@Override public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) { try { restClient.delete(model.getObject().getETagValue(), model.getObject().getKey()); SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED)); target.add(container); } catch (SyncopeClientException e) { LOG.error("While deleting object {}", model.getObject().getKey(), e); SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage()); } ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target); }
@Override public <T extends AnyTO> T newAnyTO() { T result = null; switch (anyTypeKind) { case USER: result = (T) new UserTO(); break; case GROUP: result = (T) new GroupTO(); break; case ANY_OBJECT: result = (T) new AnyObjectTO(); break; default: } return result; }
manageResources.setEntitlements( String.format("%s,%s", AnyEntitlement.READ.getFor(type), AnyEntitlement.UPDATE.getFor(type))); manageResources.setRealms(realm, modelObject.getDynRealms()); actions.add(manageResources); return actions;
@Override public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) { final AnyObjectTO clone = SerializationUtils.clone(model.getObject()); clone.setKey(null); send(AnyObjectDirectoryPanel.this, Broadcast.EXACT, new AjaxWizard.NewItemActionEvent<>(new AnyWrapper<>(clone), target)); }
: values.get(0).toString()); } else if (anyTO instanceof AnyObjectTO) { ((AnyObjectTO) anyTO).setName(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString());
@Override public void create(final AnyObject anyObject, final AnyObjectTO anyObjectTO) { AnyType type = anyTypeDAO.find(anyObjectTO.getType()); if (type == null) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidAnyType); sce.getElements().add(anyObjectTO.getType()); throw sce; if (anyObjectTO.getName() == null) { LOG.error("No name specified for this anyObject"); anyObject.setName(anyObjectTO.getName()); Realm realm = realmDAO.findByFullPath(anyObjectTO.getRealm()); if (realm == null) { SyncopeClientException noRealm = SyncopeClientException.build(ClientExceptionType.InvalidRealm); noRealm.getElements().add("Invalid or null realm specified: " + anyObjectTO.getRealm()); scce.addException(noRealm); if (anyObject.getRealm() != null) { anyObjectTO.getRelationships().forEach(relationshipTO -> { if (StringUtils.isBlank(relationshipTO.getOtherEndType()) || AnyTypeKind.USER.name().equals(relationshipTO.getOtherEndType()) anyObjectTO.getMemberships().forEach(membershipTO -> { Group group = membershipTO.getGroupKey() == null ? groupDAO.findByName(membershipTO.getGroupName())