Author: ssmiweve
Date: 2009-10-11 18:42:57 +0200 (Sun, 11 Oct 2009)
New Revision: 7304
Modified:
branches/2.18/war/src/main/java/no/sesat/search/http/filters/UserFilter.java
Log:
- take away the isLoginKeyLegalForUser(..) check on the loginKey
it was too specific to the default BasicUserService implementation, and
too restrictive a demand for alternative implementations.
- configurable to disabled the &action=logout functionality (useful when
logout is provided in another manner)
- Override annotations
Modified:
branches/2.18/war/src/main/java/no/sesat/search/http/filters/UserFilter.java
===================================================================
---
branches/2.18/war/src/main/java/no/sesat/search/http/filters/UserFilter.java
2009-10-11 16:06:41 UTC (rev 7303)
+++
branches/2.18/war/src/main/java/no/sesat/search/http/filters/UserFilter.java
2009-10-11 16:42:57 UTC (rev 7304)
@@ -79,6 +79,7 @@
* @exception IOException Thrown if an input/output error occurs
* @exception ServletException Thrown if a servlet error occurs
*/
+ @Override
public void doFilter(
final ServletRequest request,
final ServletResponse response,
@@ -95,6 +96,7 @@
/**
* Destroy method for this filter.
*/
+ @Override
public void destroy() {
}
@@ -104,6 +106,7 @@
*
* @param filterConfig the filter configuration
*/
+ @Override
public void init(final FilterConfig filterConfig) {
}
@@ -127,14 +130,15 @@
final BasicUserService basicUserService =
getBasicUserService(datamodel);
if (null != basicUserService) {
-
+ final SiteConfiguration siteConf =
datamodel.getSite().getSiteConfiguration();
final String loginKey = UserCookieUtil.getUserLoginCookie(request);
final boolean isLegalLoginKey =
basicUserService.isLegalLoginKey(loginKey);
final BasicUser user = datamodel.getUser().getUser();
final Date updateTimestamp =
UserCookieUtil.getUserUpdateCookie(request);
- final boolean actionLogout =
"logout".equals(request.getParameter("action"));
+ final boolean actionLogout =
"logout".equals(request.getParameter("action"))
+ &&
!Boolean.parseBoolean(siteConf.getProperty("sesat.user.logout.disabled"));
if (user == null && isLegalLoginKey) {
@@ -148,30 +152,21 @@
// Remove the logout from the url to prevent problems with
sesamBackUrl.
if (actionLogout) {
+
final String strippedUrl = request.getRequestURL() + "?"
+ request.getQueryString().substring(0,
request.getQueryString().indexOf("&action"));
+
redirect(strippedUrl, response);
}
- } else if (user != null && isLegalLoginKey) {
- if (!isLoginKeyLegalForUser(loginKey, user)) {
+ } else if (null != user && isLegalLoginKey &&
user.isDirty(updateTimestamp)) {
- // Check if the logged in user is the one found in the
login key
- logout(datamodel, basicUserService, response);
- loginUsingCookie(loginKey, datamodel, basicUserService,
response);
-
- } else if (user.isDirty(updateTimestamp)) {
-
// Check if the user object is dirty, refresh if needed.
- LOG.info("Logged in user dirty, refreshes: " +
user.getUsername());
+ LOG.info("Logged in user dirty, refreshes: " +
user.getFullName());
datamodel.getUser().setUser(basicUserService.refreshUser(user));
- }
}
-
}else{
-
LOG.debug("Couldn't find the basic user service.");
- return;
}
}
@@ -227,7 +222,7 @@
final HttpServletResponse response) {
final BasicUser user = datamodel.getUser().getUser();
- LOG.info("Logout: " + user.getUsername());
+ LOG.info("Logout: " + user.getFullName());
if (userService.isLegalLoginKey(user.getNextLoginKey())) {
userService.invalidateLogin(user.getNextLoginKey());
@@ -253,13 +248,6 @@
}
}
- private static boolean isLoginKeyLegalForUser(final String loginKey, final
BasicUser user) {
-
- // The user id in the login key must be the same as in the user object.
- return user.getUserId().toString().equals(
- loginKey.substring(0,
loginKey.indexOf(BasicUserService.LOGIN_KEY_SEPARATOR)));
- }
-
private static void redirect(final String url, final HttpServletResponse
response) {
try {
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits