From c729c59cedff4e800c659e524081fbd1be8db3c1 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 22 Sep 2011 16:09:37 -0400
Subject: [PATCH] Rearranged federation status enum.
---
src/com/gitblit/wicket/pages/LoginPage.java | 38 +++++++++++++++++++++++++++++++++++---
1 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/src/com/gitblit/wicket/pages/LoginPage.java b/src/com/gitblit/wicket/pages/LoginPage.java
index 971ba32..45e1e2d 100644
--- a/src/com/gitblit/wicket/pages/LoginPage.java
+++ b/src/com/gitblit/wicket/pages/LoginPage.java
@@ -15,7 +15,10 @@
*/
package com.gitblit.wicket.pages;
+import javax.servlet.http.Cookie;
+
import org.apache.wicket.PageParameters;
+import org.apache.wicket.RestartResponseException;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.PasswordTextField;
@@ -24,6 +27,8 @@
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
+import org.apache.wicket.protocol.http.WebRequest;
+import org.apache.wicket.protocol.http.WebResponse;
import com.gitblit.Constants;
import com.gitblit.GitBlit;
@@ -42,12 +47,15 @@
// If we are already logged in because user directly accessed
// the login url, redirect to the home page
if (GitBlitWebSession.get().isLoggedIn()) {
- setRedirect(true);
- setResponsePage(getApplication().getHomePage());
+ throw new RestartResponseException(getApplication().getHomePage());
+ }
+
+ if (GitBlit.getBoolean(Keys.web.allowCookieAuthentication, false)) {
+ loginByCookie();
}
add(new Label("title", GitBlit.getString(Keys.web.siteName, Constants.NAME)));
- add(new Label("name", Constants.NAME));
+ add(new Label("name", GitBlit.getString(Keys.web.siteName, Constants.NAME)));
StatelessForm<Void> loginForm = new StatelessForm<Void>("loginForm") {
@@ -61,6 +69,11 @@
UserModel user = GitBlit.self().authenticate(username, password);
if (user == null) {
error("Invalid username or password!");
+ } else if (user.username.equals(Constants.FEDERATION_USER)) {
+ // disallow the federation user from logging in via the
+ // web ui
+ error("Invalid username or password!");
+ user = null;
} else {
loginUser(user);
}
@@ -72,11 +85,30 @@
add(loginForm);
}
+ private void loginByCookie() {
+ UserModel user = null;
+
+ // Grab cookie from Browser Session
+ Cookie[] cookies = ((WebRequest) getRequestCycle().getRequest()).getCookies();
+ if (cookies != null && cookies.length > 0) {
+ user = GitBlit.self().authenticate(cookies);
+ }
+
+ // Login the user
+ loginUser(user);
+ }
+
private void loginUser(UserModel user) {
if (user != null) {
// Set the user into the session
GitBlitWebSession.get().setUser(user);
+ // Set Cookie
+ if (GitBlit.getBoolean(Keys.web.allowCookieAuthentication, false)) {
+ WebResponse response = (WebResponse) getRequestCycle().getResponse();
+ GitBlit.self().setCookie(response, user);
+ }
+
if (!continueToOriginalDestination()) {
// Redirect to home page
setResponsePage(getApplication().getHomePage());
--
Gitblit v1.9.1