From ea094a45b9a31076919ca23ba17e8ad27e90ebce Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 25 Apr 2012 17:01:00 -0400
Subject: [PATCH] Added a logout hook to IUserService
---
src/com/gitblit/GitBlit.java | 12 ++++++++++++
src/com/gitblit/ConfigUserService.java | 9 +++++++++
src/com/gitblit/IUserService.java | 7 +++++++
src/com/gitblit/GitblitUserService.java | 5 +++++
src/com/gitblit/wicket/pages/LogoutPage.java | 6 +++++-
src/com/gitblit/FileUserService.java | 9 +++++++++
6 files changed, 47 insertions(+), 1 deletions(-)
diff --git a/src/com/gitblit/ConfigUserService.java b/src/com/gitblit/ConfigUserService.java
index 828ba76..f8eff9f 100644
--- a/src/com/gitblit/ConfigUserService.java
+++ b/src/com/gitblit/ConfigUserService.java
@@ -200,6 +200,15 @@
}
/**
+ * Logout a user.
+ *
+ * @param user
+ */
+ @Override
+ public void logout(UserModel user) {
+ }
+
+ /**
* Retrieve the user object for the specified username.
*
* @param username
diff --git a/src/com/gitblit/FileUserService.java b/src/com/gitblit/FileUserService.java
index b8d4a40..02cf2b0 100644
--- a/src/com/gitblit/FileUserService.java
+++ b/src/com/gitblit/FileUserService.java
@@ -178,6 +178,15 @@
}
/**
+ * Logout a user.
+ *
+ * @param user
+ */
+ @Override
+ public void logout(UserModel user) {
+ }
+
+ /**
* Retrieve the user object for the specified username.
*
* @param username
diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java
index 2b7ba3c..a616bef 100644
--- a/src/com/gitblit/GitBlit.java
+++ b/src/com/gitblit/GitBlit.java
@@ -481,6 +481,18 @@
response.addCookie(userCookie);
}
}
+
+ /**
+ * Logout a user.
+ *
+ * @param user
+ */
+ public void logout(UserModel user) {
+ if (userService == null) {
+ return;
+ }
+ userService.logout(user);
+ }
/**
* Returns the list of all users available to the login service.
diff --git a/src/com/gitblit/GitblitUserService.java b/src/com/gitblit/GitblitUserService.java
index ddb3ca7..7ad3db7 100644
--- a/src/com/gitblit/GitblitUserService.java
+++ b/src/com/gitblit/GitblitUserService.java
@@ -141,6 +141,11 @@
public UserModel authenticate(String username, char[] password) {
return serviceImpl.authenticate(username, password);
}
+
+ @Override
+ public void logout(UserModel user) {
+ serviceImpl.logout(user);
+ }
@Override
public UserModel getUserModel(String username) {
diff --git a/src/com/gitblit/IUserService.java b/src/com/gitblit/IUserService.java
index 334bbed..c3573db 100644
--- a/src/com/gitblit/IUserService.java
+++ b/src/com/gitblit/IUserService.java
@@ -88,6 +88,13 @@
UserModel authenticate(String username, char[] password);
/**
+ * Logout a user.
+ *
+ * @param user
+ */
+ void logout(UserModel user);
+
+ /**
* Retrieve the user object for the specified username.
*
* @param username
diff --git a/src/com/gitblit/wicket/pages/LogoutPage.java b/src/com/gitblit/wicket/pages/LogoutPage.java
index 15ef0e6..4690ad1 100644
--- a/src/com/gitblit/wicket/pages/LogoutPage.java
+++ b/src/com/gitblit/wicket/pages/LogoutPage.java
@@ -19,13 +19,17 @@
import org.apache.wicket.protocol.http.WebResponse;
import com.gitblit.GitBlit;
+import com.gitblit.models.UserModel;
import com.gitblit.wicket.GitBlitWebSession;
public class LogoutPage extends WebPage {
public LogoutPage() {
- GitBlitWebSession.get().invalidate();
+ GitBlitWebSession session = GitBlitWebSession.get();
+ UserModel user = session.getUser();
GitBlit.self().setCookie((WebResponse) getResponse(), null);
+ GitBlit.self().logout(user);
+ session.invalidate();
setRedirect(true);
setResponsePage(getApplication().getHomePage());
}
--
Gitblit v1.9.1