/** * <p> * Returns a {@link Object} for the Identity Class used to store {@link IdentityType} instances. If no instance was found an * exception will be thrown. * </p> * * @param identityTremoype * @return * @throws IdentityManagementException */ private Object getIdentityObject(IdentityType identityType) throws IdentityManagementException { Object identity = lookupIdentityObjectById(identityType); if (identity == null) { throw new IdentityManagementException("The provided IdentityType instance does not exists."); } return identity; }
@Override public <T extends CredentialStorage> List<T> retrieveCredentials(Agent agent, Class<T> storageClass) { Property<Object> identityTypeProperty = getConfig().getModelProperty(PROPERTY_CREDENTIAL_IDENTITY); Property<Object> typeProperty = getConfig().getModelProperty(PROPERTY_CREDENTIAL_TYPE); EntityManager em = getEntityManager(); CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery<?> criteria = builder.createQuery(getConfig().getCredentialClass()); Root<?> root = criteria.from(getConfig().getCredentialClass()); List<Predicate> predicates = new ArrayList<Predicate>(); Object agentInstance = lookupIdentityObjectById(agent); predicates.add(builder.equal(root.get(identityTypeProperty.getName()), agentInstance)); predicates.add(builder.equal(root.get(typeProperty.getName()), storageClass.getName())); criteria.where(predicates.toArray(new Predicate[predicates.size()])); List<?> result = em.createQuery(criteria).getResultList(); List<T> storages = new ArrayList<T>(); for (Object object : result) { storages.add((T) convertToCredentialStorage(object, storageClass)); } return storages; }
List<Predicate> predicates = new ArrayList<Predicate>(); Object identityUser = lookupIdentityObjectById(member); Object identityRole = lookupIdentityObjectById(role); Object identityGroup = lookupIdentityObjectById(group); } else { if (role != null) { Object identityRole = lookupIdentityObjectById(role); Object identityGroup = lookupIdentityObjectById(group);
@Override protected void doPopulateIdentityInstance(Object toIdentity, Relationship fromRelationship, JPAIdentityStore store) { store.setModelProperty(toIdentity, PROPERTY_IDENTITY_NAME, fromRelationship.getName(), true); Object relatedFromIdentity = store.lookupIdentityObjectById(fromRelationship.from()); store.setModelProperty(toIdentity, JPAIdentityStoreConfiguration.PROPERTY_IDENTITY_RELATED_TO, relatedFromIdentity, true); Object relatesToIdentity = store.lookupIdentityObjectById(fromRelationship.to()); store.setModelProperty(toIdentity, JPAIdentityStoreConfiguration.PROPERTY_IDENTITY_RELATES_TO, relatesToIdentity, true); }
@Override public List<Predicate> getPredicate(QueryParameter queryParameter, Object[] parameterValues, JPACriteriaQueryBuilder criteria, JPAIdentityStore store) { List<Predicate> predicates = super.getPredicate(queryParameter, parameterValues, criteria, store); CriteriaBuilder builder = criteria.getBuilder(); if (queryParameter.equals(Relationship.NAME)) { predicates.add(builder.equal( criteria.getRoot().get(store.getConfig().getModelProperty(PROPERTY_IDENTITY_NAME).getName()), parameterValues[0])); } if (queryParameter.equals(Relationship.TO)) { Object relatesFromIdentity = store.lookupIdentityObjectById((IdentityType) parameterValues[0]); predicates.add(builder.equal(criteria.getRoot().get(store.getConfig().getModelProperty(PROPERTY_IDENTITY_RELATES_TO).getName()), relatesFromIdentity)); } if (queryParameter.equals(Relationship.FROM)) { Object relatedFromIdentity = store.lookupIdentityObjectById((IdentityType) parameterValues[0]); predicates.add(builder.equal(criteria.getRoot().get(store.getConfig().getModelProperty(PROPERTY_IDENTITY_RELATED_TO).getName()), relatedFromIdentity)); } return predicates; }
@Override protected void doPopulateIdentityInstance(Object toIdentity, Group fromGroup, JPAIdentityStore store) { store.setModelProperty(toIdentity, PROPERTY_IDENTITY_NAME, fromGroup.getName(), true); if (fromGroup.getParentGroup() != null) { Object parentIdentity = store.lookupIdentityObjectById(fromGroup.getParentGroup()); if (parentIdentity == null) { store.add(fromGroup.getParentGroup()); parentIdentity = store.lookupIdentityObjectById(fromGroup.getParentGroup()); } store.setModelProperty(toIdentity, PROPERTY_PARENT_GROUP, parentIdentity, true); } }
List<Predicate> predicates = new ArrayList<Predicate>(); Object agentInstance = lookupIdentityObjectById(agent);
builder.equal(fromProject.get(memberModelProperty.getName()), store.lookupIdentityObjectById(groupRole.getMember()))); builder.equal(fromProject.get(roleModelProperty.getName()), store.lookupIdentityObjectById(groupRole.getRole()))); builder.equal(fromProject.get(groupModelProperty.getName()), store.lookupIdentityObjectById(groupRole.getGroup()))); builder.equal(fromProject.get(memberModelProperty.getName()), root)); conjunction.getExpressions().add( builder.equal(fromProject.get(groupModelProperty.getName()), store.lookupIdentityObjectById(new SimpleGroup(object.toString())))); builder.equal(fromProject.get(memberModelProperty.getName()), root)); conjunction.getExpressions().add( builder.equal(fromProject.get(roleModelProperty.getName()), store.lookupIdentityObjectById(new SimpleRole(object.toString()))));
builder.equal(fromProject.get(memberModelProperty.getName()), store.lookupIdentityObjectById(groupRole.getMember()))); builder.equal(fromProject.get(roleModelProperty.getName()), store.lookupIdentityObjectById(groupRole.getRole()))); builder.equal(fromProject.get(groupModelProperty.getName()), store.lookupIdentityObjectById(groupRole.getGroup()))); builder.equal(fromProject.get(memberModelProperty.getName()), root)); conjunction.getExpressions().add( builder.equal(fromProject.get(groupModelProperty.getName()), store.lookupIdentityObjectById(new SimpleGroup(object.toString())))); builder.equal(fromProject.get(memberModelProperty.getName()), root)); conjunction.getExpressions().add( builder.equal(fromProject.get(roleModelProperty.getName()), store.lookupIdentityObjectById(new SimpleRole(object.toString()))));
criteria.getBuilder().equal(fromProject.get(roleModelProperty.getName()), criteria.getRoot())); conjunction.getExpressions().add( criteria.getBuilder().equal(fromProject.get(memberModelProperty.getName()), store.lookupIdentityObjectById((IdentityType) object)));
criteria.getBuilder().equal(fromProject.get(groupModelProperty.getName()), criteria.getRoot())); conjunction.getExpressions().add( criteria.getBuilder().equal(fromProject.get(memberModelProperty.getName()), store.lookupIdentityObjectById((IdentityType) object)));
@Override public void add(IdentityType identityType) { checkInvalidIdentityType(identityType); if (lookupIdentityObjectById(identityType) != null) { throw new IdentityManagementException("IdentityType already exists."); } try { IdentityTypeHandler<IdentityType> identityTypeManager = getConfig().getIdentityTypeManager(identityType.getClass()); Object identity = identityTypeManager.createIdentityInstance(getContext().getRealm(), identityType, this); EntityManager em = getEntityManager(); em.persist(identity); em.flush(); updateAttributes(identityType, identity); AbstractBaseEvent event = identityTypeManager.raiseCreatedEvent(identityType, this); event.getContext().setValue(EVENT_CONTEXT_USER_ENTITY, identity); getContext().getEventBridge().raiseEvent(event); } catch (Exception ex) { throw new IdentityManagementException("Exception while creating IdentityType [" + identityType + "].", ex); } }
identityRole = lookupIdentityObjectById(storedRole); identityUser = lookupIdentityObjectById(storedAgent); identityGroup = lookupIdentityObjectById(storedGroup);
Object agentInstance = lookupIdentityObjectById(agent);