Skip to content

Commit

Permalink
[JIRA GEOS-8867] Extra login forms show up in the UI only if the filt…
Browse files Browse the repository at this point in the history
…er chain name matches the LoginFormInfo name
  • Loading branch information
Alessio Fabiani committed Aug 14, 2018
1 parent 0fed60e commit 5cecfeb
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
<property name="componentClass" value="org.geoserver.web.security.oauth2.GeoNodeOAuth2AuthProviderPanel" />
<property name="name" value="geonode" />
<property name="icon" value="geonode.png" />
<property name="filterClass" value="org.geoserver.security.oauth2.GeoNodeOAuthAuthenticationFilter" />
<property name="loginPath" value="web/j_spring_oauth2_geonode_login" />
</bean>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
<property name="componentClass" value="org.geoserver.web.security.oauth2.GitHubOAuth2AuthProviderPanel" />
<property name="name" value="github" />
<property name="icon" value="github.png" />
<property name="filterClass" value="org.geoserver.security.oauth2.GitHubOAuthAuthenticationFilter" />
<property name="loginPath" value="web/j_spring_oauth2_github_login" />
</bean>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
<property name="componentClass" value="org.geoserver.web.security.oauth2.GoogleOAuth2AuthProviderPanel" />
<property name="name" value="google" />
<property name="icon" value="google.png" />
<property name="filterClass" value="org.geoserver.security.oauth2.GoogleOAuthAuthenticationFilter" />
<property name="loginPath" value="web/j_spring_oauth2_google_login" />
</bean>

Expand Down
1 change: 1 addition & 0 deletions src/web/core/src/main/java/applicationContext.xml
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,7 @@
<property name="componentClass" value="org.geoserver.web.GeoServerBasePage" />
<property name="name" value="form" />
<property name="icon" value="img/icons/silk/door-in.png" />
<property name="filterClass" value="org.geoserver.security.filter.GeoServerUserNamePasswordAuthenticationFilter" />
<property name="include" value="include_login_form.html" />
<property name="loginPath" value="j_spring_security_check" />
</bean>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import org.geoserver.catalog.Catalog;
import org.geoserver.config.GeoServer;
import org.geoserver.platform.GeoServerExtensions;
import org.geoserver.security.GeoServerSecurityProvider;
import org.geoserver.web.spring.security.GeoServerSession;
import org.geoserver.web.wicket.ParamResourceModel;
import org.geotools.util.logging.Logging;
Expand Down Expand Up @@ -203,8 +204,15 @@ protected void onComponentTag(
item.add(loginForm);

boolean filterInChain = false;
for (String filterName : securityFilters) {
if (filterName.toLowerCase().contains(info.getName())) {
List<GeoServerSecurityProvider> securityProviders =
getGeoServerApplication()
.getBeansOfType(GeoServerSecurityProvider.class);
for (GeoServerSecurityProvider securityProvider : securityProviders) {
if (securityProvider.getFilterClass() != null
&& securityProvider
.getFilterClass()
.getName()
.equals(info.getFilterClass())) {
filterInChain = true;
break;
}
Expand Down
19 changes: 19 additions & 0 deletions src/web/core/src/main/java/org/geoserver/web/LoginFormInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class LoginFormInfo extends ComponentInfo<GeoServerBasePage>
implements Comparable<LoginFormInfo> {
String name;
String icon = "";
private String filterClass;
private String include;
private String loginPath;

Expand Down Expand Up @@ -47,6 +48,24 @@ public void setIcon(String icon) {
this.icon = icon;
}

/**
* Returns the GeoServerSecurityFilter class requiring the Login Button
*
* @return the filterClass
*/
public String getFilterClass() {
return filterClass;
}

/**
* Sets the GeoServerSecurityFilter class requiring the Login Button
*
* @param filterClass the filterClass to set
*/
public void setFilterClass(String filterClass) {
this.filterClass = filterClass;
}

/**
* Static HTML Resource to include in the form (if needed).
*
Expand Down

0 comments on commit 5cecfeb

Please sign in to comment.