package teamcity.crowd.plugin.loginmodule;
import jetbrains.buildServer.serverSide.auth.LoginConfiguration;
import jetbrains.buildServer.serverSide.auth.LoginModuleDescriptor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import teamcity.crowd.plugin.PluginCrowdClient;
import teamcity.crowd.plugin.utils.LoggerFactory;
import javax.security.auth.spi.LoginModule;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class CrowdPluginLoginModuleDescriptor implements LoginModuleDescriptor {
private final PluginCrowdClient pluginCrowdClient;
private final LoggedInUserService loggedInUserService;
private LoggerFactory loggerFactory;
public CrowdPluginLoginModuleDescriptor(LoginConfiguration loginConfiguration, PluginCrowdClient pluginCrowdClient,
LoggedInUserService loggedInUserService, LoggerFactory loggerFactory){
this.pluginCrowdClient = pluginCrowdClient;
this.loggedInUserService = loggedInUserService;
this.loggerFactory = loggerFactory;
loginConfiguration.registerAuthModuleType(this);
}
@Override
public Class<? extends LoginModule> getLoginModuleClass() {
return CrowdLoginModule.class;
}
@Nullable
@Override
public Map<String, ?> getOptions() {
Map<String, Object> options = new HashMap<String, Object>();
options.put(PluginCrowdClient.class.getName(), pluginCrowdClient);
options.put(LoggerFactory.class.getName(), loggerFactory);
options.put(LoggedInUserService.class.getName(), loggedInUserService);
return options;
}
@Nullable
@Override
public Map<String, ?> getJAASOptions(@NotNull Map<String, String> stringStringMap) {
return getOptions();
}
@Nullable
@Override
public String getTextForLoginPage() {
return "Login with your Crowd Credentials.";
}
@NotNull
@Override
public String getName() {
return "Crowd";
}
@Nullable
@Override
public String getDisplayName() {
return "Crowd Login Module";
}
@NotNull
@Override
public String getDescription() {
return "Description from CrowdLoginModuleDesc";
}
@Override
public boolean isMultipleInstancesAllowed() {
return false;
}
@NotNull
@Override
public Map<String, String> getDefaultProperties() {
return new HashMap<>();
}
@Nullable
@Override
public String getEditPropertiesJspFilePath() {
return null;
}
@NotNull
@Override
public String describeProperties(@NotNull Map<String, String> stringStringMap) {
return null;
}
@Nullable
@Override
public Collection<String> validate(@NotNull Map<String, String> stringStringMap) {
return new ArrayList<>();
}
}