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

Commit 4665c89

Browse files
committed
SORMAS-Foundation#3071 Fix modal activation window shown when creating users and Keycloak is not Auth Provider
1 parent c79e8b9 commit 4665c89

3 files changed

Lines changed: 20 additions & 4 deletions

File tree

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
package de.symeda.sormas.backend.user;
2020

2121
import com.nimbusds.jose.util.JSONObjectUtils;
22+
import de.symeda.sormas.api.AuthProvider;
2223
import de.symeda.sormas.api.Language;
2324
import de.symeda.sormas.api.user.UserRole;
25+
import de.symeda.sormas.backend.common.ConfigFacadeEjb.ConfigFacadeEjbLocal;
2426
import de.symeda.sormas.backend.user.event.MockUserCreateEvent;
2527
import de.symeda.sormas.backend.user.event.PasswordResetEvent;
2628
import de.symeda.sormas.backend.user.event.UserCreateEvent;
@@ -39,6 +41,7 @@
3941
import org.slf4j.LoggerFactory;
4042

4143
import javax.annotation.PostConstruct;
44+
import javax.ejb.EJB;
4245
import javax.ejb.LocalBean;
4346
import javax.ejb.Stateless;
4447
import javax.enterprise.event.Observes;
@@ -67,6 +70,9 @@ public class KeycloakService {
6770

6871
private final Logger logger = LoggerFactory.getLogger(getClass());
6972

73+
@EJB
74+
private ConfigFacadeEjbLocal configFacade;
75+
7076
private static final String OIDC_REALM = "realm";
7177
private static final String OIDC_SERVER_URL = "auth-server-url";
7278
private static final String OIDC_CREDENTIALS = "credentials";
@@ -83,6 +89,12 @@ public class KeycloakService {
8389

8490
@PostConstruct
8591
public void init() {
92+
93+
if(!AuthProvider.KEYCLOAK.equalsIgnoreCase(configFacade.getAuthenticationProvider())) {
94+
logger.info("Keycloak Auth Provider not active");
95+
return;
96+
}
97+
8698
Optional<String> oidcJson = ConfigProvider.getConfig().getOptionalValue("sormas.backend.security.oidc.json", String.class);
8799

88100
if (!oidcJson.isPresent()) {
@@ -114,12 +126,17 @@ public void handleUserCreateEvent(@Observes UserCreateEvent userCreateEvent) {
114126
return;
115127
}
116128

129+
User user = userCreateEvent.getUser();
117130
String password = null;
118131
if (userCreateEvent instanceof MockUserCreateEvent) {
119132
password = ((MockUserCreateEvent) userCreateEvent).getPassword();
133+
Optional<UserRepresentation> mockUser = getUserByUsername(keycloak.get(), user.getUserName());
134+
if (mockUser.isPresent()) {
135+
logger.info("Mock user {} already exists. Will not create a new one", user.getUserName());
136+
return;
137+
}
120138
}
121139

122-
User user = userCreateEvent.getUser();
123140
String userId = createUser(keycloak.get(), user, password);
124141
if (StringUtils.isNotBlank(user.getUserEmail())) {
125142
sendActivationEmail(keycloak.get(), userId);

sormas-ui/src/main/java/de/symeda/sormas/ui/security/SormasOpenIdIdentityStore.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,6 @@ public CredentialValidationResult validate(OpenIdCredential credential) throws I
100100
accessToken.setClaims(accessTokenClaims);
101101
}
102102

103-
logger.info("Access Token: " + accessToken.getToken());
104-
105103
context.setAccessToken(accessToken);
106104
JsonObject userInfo = userInfoController.getUserInfo(configuration, accessToken);
107105
context.setClaims(userInfo);

sormas-ui/src/main/java/de/symeda/sormas/ui/user/UserController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ public void onCommit() {
169169
dto = FacadeProvider.getUserFacade().saveUser(dto);
170170
refreshView();
171171
makeInitialPassword(dto.getUuid());
172-
showAccountCreatedSuccessful();
173172
}
174173
}
175174
});
@@ -184,6 +183,8 @@ public void makeInitialPassword(String userUuid) {
184183
if (isSormasAuthentication) {
185184
String newPassword = FacadeProvider.getUserFacade().resetPassword(userUuid);
186185
showPasswordResetInternalSuccessPopup(newPassword);
186+
} else {
187+
showAccountCreatedSuccessful();
187188
}
188189
}
189190

0 commit comments

Comments
 (0)