diff --git a/src/main/java/dev/sultanov/keycloak/multitenancy/resource/AbstractAdminResource.java b/src/main/java/dev/sultanov/keycloak/multitenancy/resource/AbstractAdminResource.java index ae60242..82364ca 100644 --- a/src/main/java/dev/sultanov/keycloak/multitenancy/resource/AbstractAdminResource.java +++ b/src/main/java/dev/sultanov/keycloak/multitenancy/resource/AbstractAdminResource.java @@ -43,7 +43,17 @@ public abstract class AbstractAdminResource { public AbstractAdminResource(KeycloakSession session) { this.session = session; this.realm = session.getContext().getRealm(); - setup(); + this.setup(); + } + + protected AbstractAdminResource(AbstractAdminResource parent) { + this.session = parent.session; + this.realm = parent.realm; + this.auth = parent.auth; + this.adminEvent = parent.adminEvent; + this.user = parent.user; + this.entityManager = parent.entityManager; + this.tenantProvider = parent.tenantProvider; } private void setup() { diff --git a/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantInvitationsResource.java b/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantInvitationsResource.java index ffa7147..a1fa4cb 100644 --- a/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantInvitationsResource.java +++ b/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantInvitationsResource.java @@ -43,8 +43,8 @@ public class TenantInvitationsResource extends AbstractAdminResource parent, TenantModel tenant) { + super(parent); this.tenant = tenant; } diff --git a/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantMembershipsResource.java b/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantMembershipsResource.java index c9c98ad..9b77640 100644 --- a/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantMembershipsResource.java +++ b/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantMembershipsResource.java @@ -30,8 +30,8 @@ public class TenantMembershipsResource extends AbstractAdminResource parent, TenantModel tenant) { + super(parent); this.tenant = tenant; } diff --git a/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantResource.java b/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantResource.java index 8f22111..a063649 100644 --- a/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantResource.java +++ b/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantResource.java @@ -15,8 +15,8 @@ public class TenantResource extends AbstractAdminResource { private final TenantModel tenant; - public TenantResource(KeycloakSession session, TenantModel tenant) { - super(session); + public TenantResource(AbstractAdminResource parent, TenantModel tenant) { + super(parent); this.tenant = tenant; } @@ -39,11 +39,11 @@ public void deleteTenant() { @Path("invitations") public TenantInvitationsResource invitations() { - return new TenantInvitationsResource(session, tenant); + return new TenantInvitationsResource(this, tenant); } @Path("memberships") public TenantMembershipsResource memberships() { - return new TenantMembershipsResource(session, tenant); + return new TenantMembershipsResource(this, tenant); } } diff --git a/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantsResource.java b/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantsResource.java index 8226360..c2eaf8a 100644 --- a/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantsResource.java +++ b/src/main/java/dev/sultanov/keycloak/multitenancy/resource/TenantsResource.java @@ -76,7 +76,7 @@ public TenantResource getTenantResource(@PathParam("tenantId") String tenantId) if (!auth.isTenantAdmin(model)) { throw new NotAuthorizedException(String.format("Insufficient permission to access %s", tenantId)); } else { - return new TenantResource(session, model); + return new TenantResource(this, model); } } }