Use login widget on login page.

This commit is contained in:
rjy7 2010-11-16 14:44:01 +00:00
parent 2973ceebf2
commit 252edbe863
12 changed files with 79 additions and 76 deletions

View file

@ -386,6 +386,15 @@
<url-pattern>/siteAdmin.jsp</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>EmptyController</servlet-name>
<servlet-class>edu.cornell.mannlib.vitro.webapp.controller.freemarker.EmptyController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>EmptyController</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>RevisionInfoController</servlet-name>
<servlet-class>edu.cornell.mannlib.vitro.webapp.controller.freemarker.RevisionInfoController</servlet-class>
@ -1239,10 +1248,12 @@
<servlet-name>authenticate</servlet-name>
<url-pattern>/authenticate</url-pattern>
</servlet-mapping>
<!--
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
-->
<servlet-mapping>
<servlet-name>loginShibboleth</servlet-name>
<url-pattern>/loginShibboleth</url-pattern>

View file

@ -33,7 +33,7 @@ public class Controllers {
public static final String TAB_ENTITIES = "/TabEntitiesController";
public static final String SITE_ADMIN = "/siteAdmin";
public static final String LOGIN = "/siteAdmin";
public static final String LOGIN = "/login";
public static final String AUTHENTICATE = "/authenticate";
public static final String EXPORT_RDF = "/export";

View file

@ -3,7 +3,6 @@
package edu.cornell.mannlib.vitro.webapp.controller.authenticate;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
@ -107,9 +106,9 @@ public class LoginRedirector {
/** What's the URL for the site admin screen? */
private String getSiteAdminUrl(HttpServletRequest request) {
// return Route.SITE_ADMIN.url();
String contextPath = request.getContextPath();
String urlParams = "?login=block";
return contextPath + Controllers.SITE_ADMIN + urlParams;
return contextPath + Controllers.SITE_ADMIN;
}
/** Get a reference to the Authenticator. */

View file

@ -55,16 +55,6 @@ public class Authenticate extends VitroHttpServlet {
/** If this parameter is "true" (ignoring case), cancel the login. */
private static final String PARAMETER_CANCEL = "cancel";
/** If they are logging in, show them this form. */
public static final String TEMPLATE_LOGIN = "login-form.ftl";
/** If they are changing their password on first login, show them this form. */
public static final String TEMPLATE_FORCE_PASSWORD_CHANGE = "login-forcedPasswordChange.ftl";
public static final String BODY_LOGIN_NAME = "loginName";
public static final String BODY_FORM_ACTION = "formAction";
public static final String BODY_ERROR_MESSAGE = "errorMessage";
/** Where do we find the User/Session map in the servlet context? */
public static final String USER_SESSION_MAP_ATTR = "userURISessionMap";

View file

@ -0,0 +1,36 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.controller.freemarker;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet.ResponseValues;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet.TemplateResponseValues;
/*
* Servlet that only specifies a template, without putting any data
* into the template model.
*/
public class EmptyController extends FreemarkerHttpServlet {
private static final long serialVersionUID = 1L;
private static final Log log = LogFactory.getLog(EmptyController.class);
private static final Map<String, String> urlsToTemplates = new HashMap<String, String>(){
{
put("/login", "login.ftl");
}
};
protected ResponseValues processRequest(VitroRequest vreq) {
String requestedUrl = vreq.getServletPath();
String templateName = urlsToTemplates.get(requestedUrl);
return new TemplateResponseValues(templateName);
}
}

View file

@ -82,8 +82,9 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
ResponseValues responseValues;
// checkLoginStatus() does a redirect if the user is not logged in.
if (requiresLogin() && !checkLoginStatus(request, response)) {
responseValues = new RedirectResponseValues(UrlBuilder.Route.LOGIN.path());
return;
} else {
responseValues = processRequest(vreq);
}
@ -299,7 +300,7 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
urls.put("termsOfUse", urlBuilder.getPortalUrl(Route.TERMS_OF_USE));
urls.put("login", urlBuilder.getPortalUrl(Route.LOGIN));
urls.put("logout", urlBuilder.getLogoutUrl());
urls.put("siteAdmin", urlBuilder.getPortalUrl(Route.LOGIN));
urls.put("siteAdmin", urlBuilder.getPortalUrl(Route.SITE_ADMIN));
urls.put("siteIcons", urlBuilder.getPortalUrl(themeDir + "/site_icons"));
urls.put("themeImages", urlBuilder.getPortalUrl(themeDir + "/images"));
urls.put("images", urlBuilder.getUrl("/images"));

View file

@ -34,13 +34,11 @@ public class SiteAdminController extends FreemarkerHttpServlet {
return siteName + " Site Administration";
}
// Uncomment this once the login page has been separated from the site admin page.
// You also need to change UrlBuilder.Route.LOGIN path to "/login".
// @Override
// protected boolean requiresLogin() {
// // User must be logged in to view this page.
// return true;
// }
@Override
protected boolean requiresLogin() {
// User must be logged in to view this page.
return true;
}
@Override
protected ResponseValues processRequest(VitroRequest vreq) {
@ -49,61 +47,26 @@ public class SiteAdminController extends FreemarkerHttpServlet {
Map<String, Object> body = new HashMap<String, Object>();
// NOT LOGGED IN: just show login form
if (!loginBean.isLoggedIn()) {
// Unlike the other panels on this page, we put the data directly in the body, because the templates are also used
// by the JSP version, where the data is placed directly in the body map.
body.putAll(getLoginPanelData(vreq));
// LOGGED IN: show editing options based on user role
} else {
if (loginBean.isLoggedInAtLeast(LoginStatusBean.EDITOR)) {
if (loginBean.isLoggedInAtLeast(LoginStatusBean.EDITOR)) {
UrlBuilder urlBuilder = new UrlBuilder(vreq.getPortal());
UrlBuilder urlBuilder = new UrlBuilder(vreq.getPortal());
body.put("dataInput", getDataInputData(vreq));
if (loginBean.isLoggedInAtLeast(LoginStatusBean.CURATOR)) {
body.put("siteConfig", getSiteConfigurationData(vreq, urlBuilder));
body.put("ontologyEditor", getOntologyEditorData(vreq, urlBuilder));
body.put("dataInput", getDataInputData(vreq));
if (loginBean.isLoggedInAtLeast(LoginStatusBean.CURATOR)) {
body.put("siteConfig", getSiteConfigurationData(vreq, urlBuilder));
body.put("ontologyEditor", getOntologyEditorData(vreq, urlBuilder));
if (loginBean.isLoggedInAtLeast(LoginStatusBean.DBA)) {
body.put("dataTools", getDataToolsData(vreq, urlBuilder));
if (loginBean.isLoggedInAtLeast(LoginStatusBean.DBA)) {
body.put("dataTools", getDataToolsData(vreq, urlBuilder));
// Only for DataStar. Should handle without needing a DataStar-specific version of this controller.
//body.put("customReports", getCustomReportsData(vreq));
}
// Only for DataStar. Should handle without needing a DataStar-specific version of this controller.
//body.put("customReports", getCustomReportsData(vreq));
}
}
}
// Not used
// int languageProfile = wadf.getLanguageProfile();
// String languageMode = null;
// if ( 200 <= languageProfile && languageProfile < 300 ) {
// languageMode = "OWL Mode";
// } else if ( 100 == languageProfile ) {
// languageMode = "RDF Schema Mode";
// }
// body.put("languageModeStr", languageMode);
return new TemplateResponseValues(TEMPLATE_DEFAULT, body);
}
private Map<String, Object> getLoginPanelData(VitroRequest vreq) {
Map<String, Object> map = null;
// This is somewhat awkward, because we are trying to use the login code with as few modifications as possible
// as it was set up for the JSP version as well. We have to unpack the TemplateResponseValues
// object and put everything in a map.
TemplateResponseValues trv = new LoginTemplateHelper(vreq).showLoginPanel(vreq);
if (trv != null) {
map = new HashMap<String, Object>();
map.putAll(trv.getMap());
map.put("loginTemplate", trv.getTemplateName());
}
return map;
}
private Map<String, Object> getDataInputData(VitroRequest vreq) {

View file

@ -77,7 +77,8 @@ public class TemplateProcessingHelper {
try {
template = config.getTemplate(templateName);
} catch (IOException e) {
log.error("Cannot get template " + templateName);
// RY Should probably throw this error instead.
log.error("Cannot get template " + templateName, e);
}
return template;
}

View file

@ -31,7 +31,7 @@ public class UrlBuilder {
INDIVIDUAL("/individual"),
INDIVIDUAL_EDIT("/entityEdit"),
INDIVIDUAL_LIST("/individuallist"),
LOGIN("/siteAdmin"), // when login page is separated from site admin page, change to "/login"
LOGIN("/login"),
LOGOUT("/login_process.jsp"),
SEARCH("/search"),
SITE_ADMIN("/siteAdmin"),

View file

@ -80,7 +80,7 @@ public class LoginWidget extends Widget {
}
} catch (Exception e) {
log.error(e);
values = showError(e);
values = showError(e);
}
values.put("urls", urls);
return values;

View file

@ -28,6 +28,7 @@ import edu.cornell.mannlib.vitro.testing.AbstractTestClass;
import edu.cornell.mannlib.vitro.webapp.beans.User;
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
import edu.cornell.mannlib.vitro.webapp.controller.authenticate.AuthenticatorStub;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
import edu.cornell.mannlib.vitro.webapp.controller.login.LoginProcessBean;
import edu.cornell.mannlib.vitro.webapp.controller.login.LoginProcessBean.State;
@ -46,8 +47,8 @@ public class AuthenticateTest extends AbstractTestClass {
private static final String URL_LOGIN_PAGE = "http://my.local.site/vivo/"
+ Controllers.LOGIN;
private static final String URL_SITE_ADMIN_PAGE = Controllers.SITE_ADMIN
+ "?login=block";
private static final String URL_SITE_ADMIN_PAGE = Controllers.SITE_ADMIN;
private static final String URL_HOME_PAGE = "";
private static final String URL_SESSION_REDIRECT = "/sessionRedirect";
private static final String URL_CONTEXT_REDIRECT_LOCAL = "/servletContextRedirect";
@ -90,6 +91,7 @@ public class AuthenticateTest extends AbstractTestClass {
auth = new Authenticate();
auth.init(servletConfig);
}
private User createNewDbaUser() {