From e072ae6def010f86be4ffd2df2592e31c2a85377 Mon Sep 17 00:00:00 2001
From: Alfred Schmid <A.Schmid@ff-muenchen.de>
Date: Wed, 19 Feb 2014 11:04:16 -0500
Subject: [PATCH] Documented default value for empty groups filter
---
src/main/java/com/gitblit/manager/AuthenticationManager.java | 70 ++++++++++++++++++++---------------
1 files changed, 40 insertions(+), 30 deletions(-)
diff --git a/src/main/java/com/gitblit/manager/AuthenticationManager.java b/src/main/java/com/gitblit/manager/AuthenticationManager.java
index 8c66ce5..cd4a258 100644
--- a/src/main/java/com/gitblit/manager/AuthenticationManager.java
+++ b/src/main/java/com/gitblit/manager/AuthenticationManager.java
@@ -22,6 +22,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.TimeUnit;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
@@ -108,10 +109,10 @@
String realm = settings.getString(Keys.realm.userService, "${baseFolder}/users.conf");
if (legacyRedirects.containsKey(realm)) {
logger.warn("");
- logger.warn("#################################################################");
+ logger.warn(Constants.BORDER2);
logger.warn(" IUserService '{}' is obsolete!", realm);
logger.warn(" Please set '{}={}'", "realm.authenticationProviders", legacyRedirects.get(realm));
- logger.warn("#################################################################");
+ logger.warn(Constants.BORDER2);
logger.warn("");
// conditionally override specified authentication providers
@@ -235,13 +236,18 @@
return null;
}
+ UserModel user = null;
+
// try to authenticate by cookie
- UserModel user = authenticate(httpRequest.getCookies());
- if (user != null) {
- flagWicketSession(AuthenticationType.COOKIE);
- logger.debug(MessageFormat.format("{0} authenticated by cookie from {1}",
+ String cookie = getCookie(httpRequest);
+ if (!StringUtils.isEmpty(cookie)) {
+ user = userManager.getUserModel(cookie.toCharArray());
+ if (user != null) {
+ flagWicketSession(AuthenticationType.COOKIE);
+ logger.debug(MessageFormat.format("{0} authenticated by cookie from {1}",
user.username, httpRequest.getRemoteAddr()));
- return user;
+ return user;
+ }
}
// try to authenticate by BASIC
@@ -266,26 +272,6 @@
} else {
logger.warn(MessageFormat.format("Failed login attempt for {0}, invalid credentials from {1}",
username, httpRequest.getRemoteAddr()));
- }
- }
- }
- return null;
- }
-
- /**
- * Authenticate a user based on their cookie.
- *
- * @param cookies
- * @return a user object or null
- */
- protected UserModel authenticate(Cookie[] cookies) {
- if (settings.getBoolean(Keys.web.allowCookieAuthentication, true)) {
- if (cookies != null && cookies.length > 0) {
- for (Cookie cookie : cookies) {
- if (cookie.getName().equals(Constants.NAME)) {
- String value = cookie.getValue();
- return userManager.getUserModel(value.toCharArray());
- }
}
}
}
@@ -323,9 +309,10 @@
return null;
}
- // try local authentication
UserModel user = userManager.getUserModel(usernameDecoded);
- if (user != null) {
+
+ // try local authentication
+ if (user != null && user.isLocalAccount()) {
UserModel returnedUser = null;
if (user.password.startsWith(StringUtils.MD5_TYPE)) {
// password digest
@@ -364,6 +351,28 @@
}
/**
+ * Returns the Gitlbit cookie in the request.
+ *
+ * @param request
+ * @return the Gitblit cookie for the request or null if not found
+ */
+ @Override
+ public String getCookie(HttpServletRequest request) {
+ if (settings.getBoolean(Keys.web.allowCookieAuthentication, true)) {
+ Cookie[] cookies = request.getCookies();
+ if (cookies != null && cookies.length > 0) {
+ for (Cookie cookie : cookies) {
+ if (cookie.getName().equals(Constants.NAME)) {
+ String value = cookie.getValue();
+ return value;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
* Sets a cookie for the specified user.
*
* @param response
@@ -389,7 +398,8 @@
} else {
// create real cookie
userCookie = new Cookie(Constants.NAME, cookie);
- userCookie.setMaxAge(Integer.MAX_VALUE);
+ // expire the cookie in 7 days
+ userCookie.setMaxAge((int) TimeUnit.DAYS.toSeconds(7));
}
}
userCookie.setPath("/");
--
Gitblit v1.9.1