@Override public RealmTO getRealmTO(final Realm realm, final boolean admin) { RealmTO realmTO = new RealmTO(); realmTO.setKey(realm.getKey()); realmTO.setName(realm.getName()); realmTO.setParent(realm.getParent() == null ? null : realm.getParent().getKey()); realmTO.setFullPath(realm.getFullPath()); if (admin) { realmTO.setAccountPolicy(realm.getAccountPolicy() == null ? null : realm.getAccountPolicy().getKey()); realmTO.setPasswordPolicy(realm.getPasswordPolicy() == null ? null : realm.getPasswordPolicy().getKey()); realm.getActions().forEach(action -> { realmTO.getActions().add(action.getKey()); }); realm.getTemplates().forEach(template -> { realmTO.getTemplates().put(template.getAnyType().getKey(), template.get()); }); realm.getResources().forEach(resource -> { realmTO.getResources().add(resource.getKey()); }); } return realmTO; }
private void deprovision(final Realm realm, final ConnectorObject beforeObj, final ProvisioningReport result) { List<String> noPropResources = new ArrayList<>(realm.getResourceKeys()); noPropResources.remove(profile.getTask().getResource().getKey()); PropagationByResource propByRes = new PropagationByResource(); propByRes.addAll(ResourceOperation.DELETE, realm.getResourceKeys()); List<PropagationTaskInfo> taskInfos = propagationManager.createTasks(realm, propByRes, noPropResources); if (!taskInfos.isEmpty()) { taskInfos.get(0).setBeforeObj(Optional.ofNullable(beforeObj)); PropagationReporter reporter = new DefaultPropagationReporter(); taskExecutor.execute(taskInfos.get(0), reporter); reportPropagation(result, reporter); } }
private void setTemplates(final RealmTO realmTO, final Realm realm) { // validate JEXL expressions from templates and proceed if fine templateUtils.check(realmTO.getTemplates(), ClientExceptionType.InvalidRealm); realmTO.getTemplates().forEach((key, template) -> { AnyType type = anyTypeDAO.find(key); if (type == null) { LOG.debug("Invalid AnyType {} specified, ignoring...", key); } else { AnyTemplateRealm anyTemplate = realm.getTemplate(type).orElse(null); if (anyTemplate == null) { anyTemplate = entityFactory.newEntity(AnyTemplateRealm.class); anyTemplate.setAnyType(type); anyTemplate.setRealm(realm); realm.add(anyTemplate); } anyTemplate.set(template); } }); // remove all templates not contained in the TO realm.getTemplates(). removeIf(template -> !realmTO.getTemplates().containsKey(template.getAnyType().getKey())); }
private String getIntValue(final Realm realm, final Item orgUnitItem) { String value = null; switch (orgUnitItem.getIntAttrName()) { case "key": value = realm.getKey(); break; case "name": value = realm.getName(); break; case "fullpath": value = realm.getFullPath(); break; default: } return value; }
private <T extends Policy> List<Realm> findSamePolicyChildren(final Realm realm, final T policy) { List<Realm> result = new ArrayList<>(); for (Realm child : findChildren(realm)) { if ((policy instanceof AccountPolicy && child.getAccountPolicy() == null || policy.equals(child.getAccountPolicy())) || (policy instanceof PasswordPolicy && child.getPasswordPolicy() == null || policy.equals(child.getPasswordPolicy()))) { result.add(child); result.addAll(findSamePolicyChildren(child, policy)); } } return result; }
@Override public List<ConnInstance> findAll() { final Set<String> authRealms = AuthContextUtils.getAuthorizations().get(StandardEntitlement.CONNECTOR_LIST); if (authRealms == null || authRealms.isEmpty()) { return Collections.emptyList(); } TypedQuery<ConnInstance> query = entityManager().createQuery( "SELECT e FROM " + JPAConnInstance.class.getSimpleName() + " e", ConnInstance.class); return query.getResultList().stream().filter(connInstance -> authRealms.stream(). anyMatch(realm -> connInstance.getAdminRealm().getFullPath().startsWith(realm))). collect(Collectors.toList()); }
@Override public PropagationByResource update(final Realm realm, final RealmTO realmTO) { realm.setName(realmTO.getName()); realm.setParent(realmTO.getParent() == null ? null : realmDAO.find(realmTO.getParent())); realm.setAccountPolicy(null); } else { Policy policy = policyDAO.find(realmTO.getAccountPolicy()); if (policy instanceof AccountPolicy) { realm.setAccountPolicy((AccountPolicy) policy); } else { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidPolicy); realm.setPasswordPolicy(null); } else { Policy policy = policyDAO.find(realmTO.getPasswordPolicy()); if (policy instanceof PasswordPolicy) { realm.setPasswordPolicy((PasswordPolicy) policy); } else { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidPolicy); LOG.debug("Invalid " + Implementation.class.getSimpleName() + " {}, ignoring...", logicActionsKey); } else { realm.add(logicActions); realm.getActions(). removeIf(implementation -> !realmTO.getActions().contains(implementation.getKey())); LOG.debug("Invalid " + ExternalResource.class.getSimpleName() + " {}, ignoring...", resourceKey); } else {
realmTO.setParent(parent.getFullPath()); } else { parent = realmDAO.find(realmTO.getParent()); if (!parent.getFullPath().equals(parentPath)) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidPath); sce.getElements().add("Mismatching parent realm: " + parentPath + " Vs " + parent.getFullPath()); throw sce; String fullPath = StringUtils.appendIfMissing(parent.getFullPath(), "/") + realmTO.getName(); if (realmDAO.findByFullPath(fullPath) != null) { throw new DuplicateException(fullPath); propByRes.addAll(ResourceOperation.CREATE, realm.getResourceKeys()); List<PropagationTaskInfo> taskInfos = propagationManager.createTasks(realm, propByRes, null); PropagationReporter propagationReporter = taskExecutor.execute(taskInfos, false);
if (realm.getParent() != null) { try { handler.handle(realm.getKey()); reportHandled(SyncopeConstants.REALM_ANYTYPE, realm.getName()); } catch (Exception e) { LOG.warn("Failure pushing '{}' on '{}'", realm, pushTask.getResource(), e); : SearchCondConverter.convert(filter); int count = searchDAO.count( Collections.singleton(profile.getTask().getSourceRealm().getFullPath()), cond, provision.getAnyType().getKind()); for (int page = 1; page <= (count / AnyDAO.DEFAULT_PAGE_SIZE) + 1 && !interrupt; page++) { List<? extends Any<?>> anys = searchDAO.search( Collections.singleton(profile.getTask().getSourceRealm().getFullPath()), cond, page,
} else if (StringUtils.isBlank(orgUnit.getConnObjectLink())) { LOG.warn("Requesting propagation for {} but no ConnObjectLink provided for {}", realm.getFullPath(), resource); } else { PropagationTaskInfo task = new PropagationTaskInfo(); task.setResource(resource.getKey()); task.setObjectClassName(orgUnit.getObjectClass().getObjectClassValue()); task.setEntityKey(realm.getKey()); task.setOperation(operation); task.setOldConnObjectKey(propByRes.getOldConnObjectKey(resource.getKey()));
private List<AccountPolicy> getAccountPolicies(final User user) { List<AccountPolicy> policies = new ArrayList<>(); // add resource policies findAllResources(user).stream(). map(resource -> resource.getAccountPolicy()). filter(policy -> policy != null). forEachOrdered(policy -> policies.add(policy)); // add realm policies realmDAO.findAncestors(user.getRealm()).stream(). map(realm -> realm.getAccountPolicy()). filter(policy -> policy != null). forEachOrdered(policy -> policies.add(policy)); return policies; }
protected String getQuery( final AssignableCond cond, final List<Object> parameters, final SearchSupport svs) { Realm realm; try { realm = check(cond); } catch (IllegalArgumentException e) { return EMPTY_QUERY; } StringBuilder query = new StringBuilder("SELECT DISTINCT any_id FROM "). append(svs.field().name).append(" WHERE ("); if (cond.isFromGroup()) { realmDAO.findDescendants(realm).forEach(current -> { query.append("realm_id=?").append(setParameter(parameters, current.getKey())).append(" OR "); }); query.setLength(query.length() - 4); } else { for (Realm current = realm; current.getParent() != null; current = current.getParent()) { query.append("realm_id=?").append(setParameter(parameters, current.getKey())).append(" OR "); } query.append("realm_id=?").append(setParameter(parameters, realmDAO.getRoot().getKey())); } query.append(')'); return query.toString(); }
realm = realmDAO.find(connObjectKey); if (realm != null) { result.add(realm.getKey()); final String realmName = connObjectKey; result.addAll(realmDAO.findAll().stream(). filter(r -> r.getName().equalsIgnoreCase(realmName)). map(Entity::getKey).collect(Collectors.toList())); } else { realm = realmDAO.findByFullPath(connObjectKey); if (realm != null) { result.add(realm.getKey());
@Override public PasswordPolicy getPasswordPolicy() { return passwordPolicy == null && getParent() != null ? getParent().getPasswordPolicy() : passwordPolicy; }
realm.getResources().remove(profile.getTask().getResource()); } else { realm.add(profile.getTask().getResource());
forEach(realm -> realm.getResources().remove(resource)); anyObjectDAO.findByResource(resource). forEach(anyObject -> anyObject.getResources().remove(resource));
private List<LogicActions> getActions(final Realm realm) { List<LogicActions> actions = new ArrayList<>(); realm.getActions().forEach(impl -> { try { actions.add(ImplementationManager.build(impl)); } catch (Exception e) { LOG.warn("While building {}", impl, e); } }); return actions; }
@Transactional(readOnly = true) @Override public Realm findByFullPath(final String fullPath) { if (SyncopeConstants.ROOT_REALM.equals(fullPath)) { return getRoot(); } if (StringUtils.isBlank(fullPath) || !PATH_PATTERN.matcher(fullPath).matches()) { throw new MalformedPathException(fullPath); } Realm root = getRoot(); if (root == null) { return null; } Realm current = root; for (final String pathElement : fullPath.substring(1).split("/")) { Optional<Realm> first = findChildren(current).stream(). filter(realm -> pathElement.equals(realm.getName())).findFirst(); if (first.isPresent()) { current = first.get(); } else { return null; } } return current; }