@Override public void initContextForStore(IdentityContext ctx, IdentityStore<?> store) { if (store instanceof JPAIdentityStore) { if (!ctx.isParameterSet(JPAIdentityStore.INVOCATION_CTX_ENTITY_MANAGER)) { ctx.setParameter(JPAIdentityStore.INVOCATION_CTX_ENTITY_MANAGER, entityManager); } } } }).supportAllFeatures();
@Override public void initContextForStore(IdentityContext context, IdentityStore<?> store) { if (store instanceof JPAIdentityStore) { EntityManager entityManager = context.getParameter(JPAIdentityStore.INVOCATION_CTX_ENTITY_MANAGER); if (entityManager == null || !entityManager.isOpen()) { context.setParameter(JPAIdentityStore.INVOCATION_CTX_ENTITY_MANAGER, getEntityManager(ContextTransactionManager.getInstance())); } } } });
@Override public void removeCredential(IdentityContext context, Account account, Class<? extends CredentialStorage> storageClass) { List<FileCredentialStorage> credentials = getCredentials(account, storageClass); if (credentials != null) { credentials.clear(); } flushCredentials(context.getPartition()); }
@Override public void initContextForStore(IdentityContext context, IdentityStore<?> store) { context.setParameter(JPAIdentityStore.INVOCATION_CTX_ENTITY_MANAGER,entityManager); } })
protected IdentityManager getIdentityManager(IdentityContext context) { IdentityManager identityManager = context.getParameter(IdentityManager.IDENTITY_MANAGER_CTX_PARAMETER); if (identityManager == null) { throw new IdentityManagementException("IdentityManager not set into context."); } return identityManager; }
@Override public void revokeAllPermissions(IdentityContext context, Object resource) { Partition partition = context.getPartition(); FilePartition filePartition = resolve(partition.getClass(), partition.getName()); Collection<List<FilePermission>> allPermissions = filePartition.getPermissions().values(); Class resourceClass = context.getPermissionHandlerPolicy().getResourceClass(resource); Serializable resourceIdentifier = context.getPermissionHandlerPolicy().getIdentifier(resource); if (allPermissions != null) { for (List<FilePermission> permissions : allPermissions) { for (FilePermission filePermission : new ArrayList<FilePermission>(permissions)) { Permission permission = filePermission.getEntry(); if (hasAttributes(permission, resourceClass, resourceIdentifier, null)) { permissions.remove(filePermission); } } } this.fileDataSource.flushPermissions(filePartition); } }
@Override public void add(IdentityContext context, AttributedType attributedType) { attributedType.setId(context.getIdGenerator().generate()); if (IdentityType.class.isInstance(attributedType)) { IdentityType identityType = (IdentityType) attributedType; identityType.setPartition(context.getPartition()); if (isTraceEnabled()) { IDENTITY_STORE_LOGGER.tracef("Type with identifier [%s] belongs to partition [%s][%s]", attributedType.getId(), context.getPartition().getName(), context.getPartition()); } } addAttributedType(context, attributedType); if (isTraceEnabled()) { IDENTITY_STORE_LOGGER.tracef("Type with identifier [%s] successfully added to identity store [%s].", attributedType.getId(), this); } }
@Override public void revokeAllPermissions(IdentityContext ctx, Object resource) { EntityManager em = getEntityManager(ctx); EntityMapper mapper = getPermissionMapperForResource(resource.getClass()); Property resourceClassProperty = mapper.getProperty(PermissionResourceClass.class).getValue(); Property resourceIdentifierProperty = mapper.getProperty(PermissionResourceIdentifier.class).getValue(); CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(mapper.getEntityType()); Root from = cq.from(mapper.getEntityType()); List<Predicate> predicates = new ArrayList<Predicate>(); // Set the resource class and resource identifier predicates predicates.add(cb.equal(from.get(resourceClassProperty.getName()), ctx.getPermissionHandlerPolicy().getResourceClass(resource).getName())); predicates.add(cb.equal(from.get(resourceIdentifierProperty.getName()), ctx.getPermissionHandlerPolicy().getIdentifier(resource).toString())); cq.where(predicates.toArray(new Predicate[predicates.size()])); List results = em.createQuery(cq).getResultList(); for (Object result : results) { em.remove(result); } }
protected IdGenerator getIdGenerator() { return getIdentityContext().getIdGenerator(); }
protected EventBridge getEventBridge() { return getIdentityContext().getEventBridge(); }
@Override protected IdentityContext createIdentityContext(Partition partition, EventBridge eventBridge, IdGenerator idGenerator) { IdentityContext identityContext = super.createIdentityContext(partition, eventBridge, idGenerator); identityContext.setParameter(IDENTITY_MANAGER_CTX_PARAMETER, this); return identityContext; }
private EntityManager getEntityManager(IdentityContext context) { EntityManager entityManager = (EntityManager) context.getParameter(INVOCATION_CTX_ENTITY_MANAGER); if (entityManager == null) { throw MESSAGES.storeJpaCouldNotGetEntityManagerFromStoreContext(); } return entityManager; }
@Override public void revokeAllPermissions(IdentityContext context, Object resource) { Partition partition = context.getPartition(); FilePartition filePartition = resolve(partition.getClass(), partition.getName()); Collection<List<FilePermission>> allPermissions = filePartition.getPermissions().values(); Class resourceClass = context.getPermissionHandlerPolicy().getResourceClass(resource); Serializable resourceIdentifier = context.getPermissionHandlerPolicy().getIdentifier(resource); if (allPermissions != null) { for (List<FilePermission> permissions : allPermissions) { for (FilePermission filePermission : new ArrayList<FilePermission>(permissions)) { Permission permission = filePermission.getEntry(); if (hasAttributes(permission, resourceClass, resourceIdentifier, null)) { permissions.remove(filePermission); } } } this.fileDataSource.flushPermissions(filePartition); } }
@Override public void add(IdentityContext context, AttributedType attributedType) { attributedType.setId(context.getIdGenerator().generate()); if (IdentityType.class.isInstance(attributedType)) { IdentityType identityType = (IdentityType) attributedType; identityType.setPartition(context.getPartition()); if (isTraceEnabled()) { IDENTITY_STORE_LOGGER.tracef("Type with identifier [%s] belongs to partition [%s][%s]", attributedType.getId(), context.getPartition().getName(), context.getPartition()); } } addAttributedType(context, attributedType); if (isTraceEnabled()) { IDENTITY_STORE_LOGGER.tracef("Type with identifier [%s] successfully added to identity store [%s].", attributedType.getId(), this); } }
@Override public void revokeAllPermissions(IdentityContext ctx, Object resource) { EntityManager em = getEntityManager(ctx); EntityMapper mapper = getPermissionMapperForResource(resource.getClass()); Property resourceClassProperty = mapper.getProperty(PermissionResourceClass.class).getValue(); Property resourceIdentifierProperty = mapper.getProperty(PermissionResourceIdentifier.class).getValue(); CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(mapper.getEntityType()); Root from = cq.from(mapper.getEntityType()); List<Predicate> predicates = new ArrayList<Predicate>(); // Set the resource class and resource identifier predicates predicates.add(cb.equal(from.get(resourceClassProperty.getName()), ctx.getPermissionHandlerPolicy().getResourceClass(resource).getName())); predicates.add(cb.equal(from.get(resourceIdentifierProperty.getName()), ctx.getPermissionHandlerPolicy().getIdentifier(resource).toString())); cq.where(predicates.toArray(new Predicate[predicates.size()])); List results = em.createQuery(cq).getResultList(); for (Object result : results) { em.remove(result); } }
protected IdGenerator getIdGenerator() { return getIdentityContext().getIdGenerator(); }
protected EventBridge getEventBridge() { return getIdentityContext().getEventBridge(); }
@Override public void initContextForStore(IdentityContext context, IdentityStore<?> store) { if (store instanceof JPAIdentityStore) { if (!context.isParameterSet(JPAIdentityStore.INVOCATION_CTX_ENTITY_MANAGER)) { context.setParameter(JPAIdentityStore.INVOCATION_CTX_ENTITY_MANAGER, this.entityManagerProvider.getEntityManager()); } } } }
@Override protected IdentityContext createIdentityContext(Partition partition, EventBridge eventBridge, IdGenerator idGenerator) { IdentityContext identityContext = super.createIdentityContext(partition, eventBridge, idGenerator); identityContext.setParameter(IDENTITY_MANAGER_CTX_PARAMETER, this); return identityContext; }
@Override public void initContextForStore(IdentityContext context, IdentityStore<?> store) { if (store instanceof JPAIdentityStore) { EntityManager entityManager = context.getParameter(JPAIdentityStore.INVOCATION_CTX_ENTITY_MANAGER); if (entityManager == null || !entityManager.isOpen()) { context.setParameter(JPAIdentityStore.INVOCATION_CTX_ENTITY_MANAGER, getEntityManager(getTransactionManager().getValue())); } } } });