summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/manager/ISessionManager.java
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-11-17 16:15:24 -0500
committerJames Moger <james.moger@gitblit.com>2013-11-26 16:07:04 -0500
commitdb4f6b5740c6ea45d9e2209dc569bc18904a8b4d (patch)
tree8dd6c651876359ea2d66e844b77af29394f8cd1e /src/main/java/com/gitblit/manager/ISessionManager.java
parent99d0d4fd66f3490b61c700065b7d16bc4e73f226 (diff)
downloadgitblit-db4f6b5740c6ea45d9e2209dc569bc18904a8b4d.tar.gz
gitblit-db4f6b5740c6ea45d9e2209dc569bc18904a8b4d.zip
Define manager interfaces and update all of Gitblit to use managers
These manager interfaces define how the GitBlit singleton will eventually be split into smaller component managers. The Wicket app and all servlets have been updated to request the needed managers. There are _very_ few method signature changes - although there are a handful. This is a surgical sharding of responsibility based on a proof of concept refactor. Instead of random references to GittBlit.self() there are now precise references to the manager interface required to accomplish some task. Some tasks may require references to multiple managers. The code is now littered with calls to GitBlit.getManager(class) and those familiar with the code-base will no doubt notice the duplication of methods from IUserService in IUserManager and the addition of implementation methods in the GitBlit context class. When the GitBlit class is broken apart and the existing external authentication user service classes are refactored to AuthenticationService classes, this will again simplify and flatten. But in order to safely and cleanly modularize the stable code-base we will have to live with a little duplication for a short while. Change-Id: I7314ec8acaab2dcc6092785ed4434cc09fdbbe16
Diffstat (limited to 'src/main/java/com/gitblit/manager/ISessionManager.java')
-rw-r--r--src/main/java/com/gitblit/manager/ISessionManager.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/manager/ISessionManager.java b/src/main/java/com/gitblit/manager/ISessionManager.java
new file mode 100644
index 00000000..09e306ac
--- /dev/null
+++ b/src/main/java/com/gitblit/manager/ISessionManager.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2013 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gitblit.manager;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.gitblit.models.UserModel;
+
+public interface ISessionManager {
+
+ /**
+ * Authenticate a user based on HTTP request parameters.
+ *
+ * Authentication by X509Certificate is tried first and then by cookie.
+ *
+ * @param httpRequest
+ * @return a user object or null
+ */
+ UserModel authenticate(HttpServletRequest httpRequest);
+
+ /**
+ * Authenticate a user based on HTTP request parameters.
+ *
+ * Authentication by X509Certificate, servlet container principal, cookie,
+ * and BASIC header.
+ *
+ * @param httpRequest
+ * @param requiresCertificate
+ * @return a user object or null
+ */
+ UserModel authenticate(HttpServletRequest httpRequest, boolean requiresCertificate);
+
+ UserModel authenticate(String username, char[] password);
+
+ /**
+ * Sets a cookie for the specified user.
+ *
+ * @param response
+ * @param user
+ */
+ void setCookie(HttpServletResponse response, UserModel user);
+
+ /**
+ * Logout a user.
+ *
+ * @param user
+ */
+ void logout(HttpServletResponse response, UserModel user);
+
+} \ No newline at end of file