Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -132,18 +132,15 @@ public Optional<Realm> getRealmByName(String name) {
}

@Override
public <C extends AbstractAuthConfig, T extends AuthMethod<C>> T addProvider(String realmId, AuthMethodConfig<C> config) {
public <C extends AbstractAuthConfig> Realm addProvider(String realmId, AuthMethodConfig<C> config) {
AuthMethodProvider<C> provider = (AuthMethodProvider<C>) providerRegistry.getProvider(config.getType());
if (provider == null) {
throw new IllegalArgumentException("Provider type " + config.getType() + " not found");
}

AuthMethod<C> authMethod = provider.createAuthMethod(config);
Realm realm = getRealmById(realmId).orElseThrow(() -> new IllegalArgumentException("Realm with id " + realmId + " not found"));
realm.addAuthMethod(config);
realmRepository.save((com.netgrif.application.engine.adapter.spring.auth.domain.Realm) realm);

return (T) authMethod;
return realmRepository.save((com.netgrif.application.engine.adapter.spring.auth.domain.Realm) realm);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,9 +141,9 @@ public Optional<AbstractUser> findUserByUsername(String username, String realmId
String collectionName = collectionNameProvider.getCollectionNameForRealm(realmId);
Optional<AbstractUser> userOpt = userRepository.findByUsername(username, mongoTemplate, collectionName).map(user -> (AbstractUser) user);
if (userOpt.isPresent()) {
log.debug("User [{}] found in realm [{}]", username, collectionName);
log.debug("User [{}] found in realm [{}]", username, realmId);
} else {
log.warn("User [{}] not found in realm [{}]", username, collectionName);
log.warn("User [{}] not found in realm [{}]", username, realmId);
}
return userOpt;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package com.netgrif.application.engine.auth.provider;

import com.netgrif.application.engine.objects.auth.provider.AuthMethod;
import com.netgrif.application.engine.objects.auth.provider.AuthMethodConfig;

public interface AuthMethodProvider<T extends AbstractAuthConfig> {

String getProviderType();

AuthMethod<T> createAuthMethod(AuthMethodConfig<?> authMethodConfig);

Class<T> getConfigClass();

Class<? extends AuthMethod<T>> getAuthMethodClass();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,26 @@
import org.springframework.stereotype.Component;

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

@Slf4j
@Component
public class ProviderRegistry {

protected final Map<String, Class<? extends AbstractAuthConfig>> configClasses = new HashMap<>();
protected final Map<String, Class<? extends AbstractAuthConfig>> configClasses = new ConcurrentHashMap<>();

protected final Map<String, AuthMethodProvider<?>> providers = new HashMap<>();
protected final Map<String, AuthMethodProvider<?>> providers = new ConcurrentHashMap<>();

Comment thread
machacjozef marked this conversation as resolved.
/**
* Registers provider into this bean
*
* @param type type of the provider. It's used as a key in the map registry
* @param provider provider instance to register. It's used as a value in the map registry
* */
public void registerProvider(String type, AuthMethodProvider<?> provider) {
providers.put(type.toLowerCase(), provider);
configClasses.put(type.toLowerCase(), provider.getConfigClass());
log.info("Registered provider for type: " + type);
log.info("Registered provider for type: {}", type);
}

public Class<? extends AbstractAuthConfig> getConfigClass(String type) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public interface RealmService {

Optional<Realm> getRealmByName(String name);

<C extends AbstractAuthConfig, T extends AuthMethod<C>> T addProvider(String realmId, AuthMethodConfig<C> config);
<C extends AbstractAuthConfig> Realm addProvider(String realmId, AuthMethodConfig<C> config);

void removeProvider(String realmId, String providerId);

Expand Down
Loading