mirror of
https://github.com/keycloak/keycloak.git
synced 2026-01-10 15:32:05 -03:30
Adding organization membership provider events
Signed-off-by: Pedro Igor <pigor.craveiro@gmail.com>
This commit is contained in:
parent
0a05ba49d1
commit
b70303f293
@ -191,6 +191,7 @@ public class JpaOrganizationProvider implements OrganizationProvider {
|
||||
}
|
||||
|
||||
user.joinGroup(group, metadata);
|
||||
OrganizationModel.OrganizationMemberJoinEvent.fire(organization, user, session);
|
||||
} finally {
|
||||
if (current == null) {
|
||||
session.getContext().setOrganization(null);
|
||||
@ -430,6 +431,8 @@ public class JpaOrganizationProvider implements OrganizationProvider {
|
||||
}
|
||||
}
|
||||
|
||||
OrganizationModel.OrganizationMemberLeaveEvent.fire(organization, member, session);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -22,6 +22,8 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.keycloak.provider.ProviderEvent;
|
||||
|
||||
public interface OrganizationModel {
|
||||
|
||||
String ORGANIZATION_ATTRIBUTE = "kc.org";
|
||||
@ -47,6 +49,54 @@ public interface OrganizationModel {
|
||||
}
|
||||
}
|
||||
|
||||
interface OrganizationMembershipEvent extends ProviderEvent {
|
||||
OrganizationModel getOrganization();
|
||||
UserModel getUser();
|
||||
KeycloakSession getSession();
|
||||
}
|
||||
|
||||
interface OrganizationMemberJoinEvent extends OrganizationMembershipEvent {
|
||||
static void fire(OrganizationModel organization, UserModel user, KeycloakSession session) {
|
||||
session.getKeycloakSessionFactory().publish(new OrganizationModel.OrganizationMemberJoinEvent() {
|
||||
@Override
|
||||
public UserModel getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrganizationModel getOrganization() {
|
||||
return organization;
|
||||
}
|
||||
|
||||
@Override
|
||||
public KeycloakSession getSession() {
|
||||
return session;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
interface OrganizationMemberLeaveEvent extends OrganizationMembershipEvent {
|
||||
static void fire(OrganizationModel organization, UserModel user, KeycloakSession session) {
|
||||
session.getKeycloakSessionFactory().publish(new OrganizationModel.OrganizationMemberLeaveEvent() {
|
||||
@Override
|
||||
public UserModel getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrganizationModel getOrganization() {
|
||||
return organization;
|
||||
}
|
||||
|
||||
@Override
|
||||
public KeycloakSession getSession() {
|
||||
return session;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
String getId();
|
||||
|
||||
void setName(String name);
|
||||
|
||||
@ -1030,7 +1030,13 @@ public class UserResource {
|
||||
try {
|
||||
if (user.isMemberOf(group)){
|
||||
user.leaveGroup(group);
|
||||
adminEvent.operation(OperationType.DELETE).resource(ResourceType.GROUP_MEMBERSHIP).representation(ModelToRepresentation.toRepresentation(group, true)).resourcePath(session.getContext().getUri()).success();
|
||||
adminEvent.operation(OperationType.DELETE)
|
||||
.resource(ResourceType.GROUP_MEMBERSHIP)
|
||||
.representation(ModelToRepresentation.toRepresentation(group, true))
|
||||
.resourcePath(session.getContext().getUri())
|
||||
.detail(UserModel.USERNAME, user.getUsername())
|
||||
.detail(UserModel.EMAIL, user.getEmail())
|
||||
.success();
|
||||
}
|
||||
} catch (ModelIllegalStateException e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
@ -1057,7 +1063,13 @@ public class UserResource {
|
||||
|
||||
if (!RoleUtils.isDirectMember(user.getGroupsStream(),group)){
|
||||
user.joinGroup(group);
|
||||
adminEvent.operation(OperationType.CREATE).resource(ResourceType.GROUP_MEMBERSHIP).representation(ModelToRepresentation.toRepresentation(group, true)).resourcePath(session.getContext().getUri()).success();
|
||||
adminEvent.operation(OperationType.CREATE)
|
||||
.resource(ResourceType.GROUP_MEMBERSHIP)
|
||||
.representation(ModelToRepresentation.toRepresentation(group, true))
|
||||
.resourcePath(session.getContext().getUri())
|
||||
.detail(UserModel.USERNAME, user.getUsername())
|
||||
.detail(UserModel.EMAIL, user.getEmail())
|
||||
.success();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user