Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit e500ba3

Browse files
lgallgal
authored andcommitted
SORMAS-Foundation#2624 revert unwanted changes in KeycloakService
1 parent bf5a137 commit e500ba3

1 file changed

Lines changed: 47 additions & 37 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/user/KeycloakService.java

Lines changed: 47 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,27 @@
1818

1919
package de.symeda.sormas.backend.user;
2020

21-
import com.nimbusds.jose.util.JSONObjectUtils;
22-
import de.symeda.sormas.api.Language;
23-
import de.symeda.sormas.api.user.UserRole;
24-
import de.symeda.sormas.backend.user.event.*;
25-
import net.minidev.json.JSONObject;
21+
import static java.util.Collections.singletonList;
22+
import static org.keycloak.representations.IDToken.LOCALE;
23+
24+
import java.text.ParseException;
25+
import java.util.Arrays;
26+
import java.util.Collections;
27+
import java.util.HashMap;
28+
import java.util.List;
29+
import java.util.Map;
30+
import java.util.Optional;
31+
import java.util.Set;
32+
import java.util.stream.Collectors;
33+
34+
import javax.annotation.PostConstruct;
35+
import javax.ejb.EJB;
36+
import javax.ejb.LocalBean;
37+
import javax.ejb.Stateless;
38+
import javax.enterprise.event.Observes;
39+
import javax.ws.rs.WebApplicationException;
40+
import javax.ws.rs.core.Response;
41+
2642
import org.apache.commons.collections.CollectionUtils;
2743
import org.apache.commons.lang3.StringUtils;
2844
import org.eclipse.microprofile.config.ConfigProvider;
@@ -35,24 +51,17 @@
3551
import org.slf4j.Logger;
3652
import org.slf4j.LoggerFactory;
3753

38-
import javax.annotation.PostConstruct;
39-
import javax.ejb.LocalBean;
40-
import javax.ejb.Stateless;
41-
import javax.enterprise.event.Observes;
42-
import javax.ws.rs.WebApplicationException;
43-
import javax.ws.rs.core.Response;
44-
import java.text.ParseException;
45-
import java.util.Arrays;
46-
import java.util.Collections;
47-
import java.util.HashMap;
48-
import java.util.List;
49-
import java.util.Map;
50-
import java.util.Optional;
51-
import java.util.Set;
52-
import java.util.stream.Collectors;
54+
import com.nimbusds.jose.util.JSONObjectUtils;
5355

54-
import static java.util.Collections.singletonList;
55-
import static org.keycloak.representations.IDToken.LOCALE;
56+
import de.symeda.sormas.api.AuthProvider;
57+
import de.symeda.sormas.api.Language;
58+
import de.symeda.sormas.api.user.UserRole;
59+
import de.symeda.sormas.backend.common.ConfigFacadeEjb.ConfigFacadeEjbLocal;
60+
import de.symeda.sormas.backend.user.event.MockUserCreateEvent;
61+
import de.symeda.sormas.backend.user.event.PasswordResetEvent;
62+
import de.symeda.sormas.backend.user.event.UserCreateEvent;
63+
import de.symeda.sormas.backend.user.event.UserUpdateEvent;
64+
import net.minidev.json.JSONObject;
5665

5766
/**
5867
* @author Alex Vidrean
@@ -64,6 +73,9 @@ public class KeycloakService {
6473

6574
private final Logger logger = LoggerFactory.getLogger(getClass());
6675

76+
@EJB
77+
private ConfigFacadeEjbLocal configFacade;
78+
6779
private static final String OIDC_REALM = "realm";
6880
private static final String OIDC_SERVER_URL = "auth-server-url";
6981
private static final String OIDC_CREDENTIALS = "credentials";
@@ -80,6 +92,12 @@ public class KeycloakService {
8092

8193
@PostConstruct
8294
public void init() {
95+
96+
if (!AuthProvider.KEYCLOAK.equalsIgnoreCase(configFacade.getAuthenticationProvider())) {
97+
logger.info("Keycloak Auth Provider not active");
98+
return;
99+
}
100+
83101
Optional<String> oidcJson = ConfigProvider.getConfig().getOptionalValue("sormas.backend.security.oidc.json", String.class);
84102

85103
if (!oidcJson.isPresent()) {
@@ -111,17 +129,20 @@ public void handleUserCreateEvent(@Observes UserCreateEvent userCreateEvent) {
111129
return;
112130
}
113131

132+
User user = userCreateEvent.getUser();
114133
String password = null;
115134
if (userCreateEvent instanceof MockUserCreateEvent) {
116135
password = ((MockUserCreateEvent) userCreateEvent).getPassword();
136+
Optional<UserRepresentation> mockUser = getUserByUsername(keycloak.get(), user.getUserName());
137+
if (mockUser.isPresent()) {
138+
logger.info("Mock user {} already exists. Will not create a new one", user.getUserName());
139+
return;
140+
}
117141
}
118142

119-
User user = userCreateEvent.getUser();
120143
String userId = createUser(keycloak.get(), user, password);
121144
if (StringUtils.isNotBlank(user.getUserEmail())) {
122145
sendActivationEmail(keycloak.get(), userId);
123-
} else {
124-
logger.warn("Cannot send activation email, because the user has no email");
125146
}
126147
}
127148

@@ -158,18 +179,7 @@ public void handlePasswordResetEvent(@Observes PasswordResetEvent passwordResetE
158179
logger.warn("Cannot find user to update for username {}", user.getUserName());
159180
return;
160181
}
161-
162-
String userId = userRepresentation.get().getId();
163-
164-
if (passwordResetEvent instanceof MockPasswordUpdateEvent) {
165-
UserRepresentation existingUser = userRepresentation.get();
166-
setCredentials(existingUser, ((MockPasswordUpdateEvent) passwordResetEvent).getPassword());
167-
keycloak.get().realms().realm(REALM_NAME).users().get(userId).update(existingUser);
168-
} else if (StringUtils.isNotBlank(user.getUserEmail())) {
169-
sendPasswordResetEmail(keycloak.get(), userId);
170-
} else {
171-
logger.warn("Cannot send password reset email, because the user has no email");
172-
}
182+
userRepresentation.ifPresent(existing -> sendPasswordResetEmail(keycloak.get(), existing.getId()));
173183
}
174184

175185
private UserRepresentation createUserRepresentation(User user, String password) {

0 commit comments

Comments
 (0)