From 388f49ada1b32bd2e99c964a0278094e4f21c3fb Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 25 Sep 2014 10:20:03 -0400 Subject: [PATCH] Fix failure to clear/delete ticket topic and description --- src/main/java/com/gitblit/manager/AuthenticationManager.java | 70 ++++++++++++++++++++++++++-------- 1 files changed, 53 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/gitblit/manager/AuthenticationManager.java b/src/main/java/com/gitblit/manager/AuthenticationManager.java index 47425ce..bc1857b 100644 --- a/src/main/java/com/gitblit/manager/AuthenticationManager.java +++ b/src/main/java/com/gitblit/manager/AuthenticationManager.java @@ -47,7 +47,7 @@ import com.gitblit.auth.WindowsAuthProvider; import com.gitblit.models.TeamModel; import com.gitblit.models.UserModel; -import com.gitblit.transport.ssh.SshSession; +import com.gitblit.transport.ssh.SshKey; import com.gitblit.utils.Base64; import com.gitblit.utils.HttpUtils; import com.gitblit.utils.StringUtils; @@ -160,7 +160,7 @@ } return this; } - + public void addAuthenticationProvider(AuthenticationProvider prov) { authenticationProviders.add(prov); } @@ -291,28 +291,31 @@ } /** - * Authenticate a user based on SSH session. + * Authenticate a user based on a public key. * - * @param SshSession + * This implementation assumes that the authentication has already take place + * (e.g. SSHDaemon) and that this is a validation/verification of the user. + * + * @param username + * @param key * @return a user object or null */ @Override - public UserModel authenticate(SshSession sshSession) { - String username = sshSession.getRemoteUser(); + public UserModel authenticate(String username, SshKey key) { if (username != null) { if (!StringUtils.isEmpty(username)) { UserModel user = userManager.getUserModel(username); if (user != null) { // existing user - logger.debug(MessageFormat.format("{0} authenticated by servlet container principal from {1}", - user.username, sshSession.getRemoteAddress())); - return validateAuthentication(user, AuthenticationType.SSH); + logger.debug(MessageFormat.format("{0} authenticated by {1} public key", + user.username, key.getAlgorithm())); + return validateAuthentication(user, AuthenticationType.PUBLIC_KEY); } - logger.warn(MessageFormat.format("Failed to find UserModel for {0}, attempted ssh authentication from {1}", - username, sshSession.getRemoteAddress())); + logger.warn(MessageFormat.format("Failed to find UserModel for {0} during public key authentication", + username)); } } else { - logger.warn("Empty user in SSH session"); + logger.warn("Empty user passed to AuthenticationManager.authenticate!"); } return null; } @@ -388,14 +391,14 @@ } } } - + // could not authenticate locally or with a provider return null; } - + /** * Returns a UserModel if local authentication succeeds. - * + * * @param user * @param password * @return a UserModel if local authentication succeeds, null otherwise @@ -451,7 +454,20 @@ * @param user */ @Override + @Deprecated public void setCookie(HttpServletResponse response, UserModel user) { + setCookie(null, response, user); + } + + /** + * Sets a cookie for the specified user. + * + * @param request + * @param response + * @param user + */ + @Override + public void setCookie(HttpServletRequest request, HttpServletResponse response, UserModel user) { if (settings.getBoolean(Keys.web.allowCookieAuthentication, true)) { GitBlitWebSession session = GitBlitWebSession.get(); boolean standardLogin = session.authenticationType.isStandard(); @@ -474,7 +490,13 @@ userCookie.setMaxAge((int) TimeUnit.DAYS.toSeconds(7)); } } - userCookie.setPath("/"); + String path = "/"; + if (request != null) { + if (!StringUtils.isEmpty(request.getContextPath())) { + path = request.getContextPath(); + } + } + userCookie.setPath(path); response.addCookie(userCookie); } } @@ -483,11 +505,25 @@ /** * Logout a user. * + * @param response * @param user */ @Override + @Deprecated public void logout(HttpServletResponse response, UserModel user) { - setCookie(response, null); + setCookie(null, response, null); + } + + /** + * Logout a user. + * + * @param request + * @param response + * @param user + */ + @Override + public void logout(HttpServletRequest request, HttpServletResponse response, UserModel user) { + setCookie(request, response, null); } /** -- Gitblit v1.9.1