From 22fc5e48cbe050d8485f78f6165b59e4085eaeef Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sat, 25 Jun 2011 17:10:59 -0400
Subject: [PATCH] Moved Build classes to their own package

---
 src/com/gitblit/wicket/pages/LoginPage.java |   35 +++++++++++++++++++++++++++++++----
 1 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/src/com/gitblit/wicket/pages/LoginPage.java b/src/com/gitblit/wicket/pages/LoginPage.java
index 56e979c..6ee72db 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,15 +47,18 @@
 		// 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));
 
 		StatelessForm<Void> loginForm = new StatelessForm<Void>("loginForm") {
-			
+
 			private static final long serialVersionUID = 1L;
 
 			@Override
@@ -72,11 +80,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