From 87cc1ed60735a419a3ea23f20614fc0a3f9bab60 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 15 Apr 2011 17:18:51 -0400
Subject: [PATCH] Settings overhaul. Fixes to authentication.  Bind interface feature.

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

diff --git a/src/com/gitblit/wicket/LoginPage.java b/src/com/gitblit/wicket/LoginPage.java
index e3a345c..3f8206e 100644
--- a/src/com/gitblit/wicket/LoginPage.java
+++ b/src/com/gitblit/wicket/LoginPage.java
@@ -1,24 +1,23 @@
 package com.gitblit.wicket;
 
 import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
 
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.StatelessForm;
 import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.image.ContextImage;
 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 org.apache.wicket.protocol.http.servlet.ServletWebRequest;
 
 import com.gitblit.Constants;
 import com.gitblit.GitBlit;
+import com.gitblit.Keys;
 
 public class LoginPage extends WebPage {
 
@@ -30,8 +29,7 @@
 
 		tryAutomaticLogin();
 
-		add(new Label("title", getServerName()));
-		add(new ContextImage("logo", "gitblt2.png"));
+		add(new Label("title", GitBlit.self().settings().getString(Keys.web.siteName, Constants.NAME)));
 		add(new Label("name", Constants.NAME));
 
 		Form<Void> loginForm = new LoginForm("loginForm");
@@ -41,17 +39,20 @@
 		add(loginForm);
 	}
 
-	protected String getServerName() {
-		ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest();
-		HttpServletRequest req = servletWebRequest.getHttpServletRequest();
-		return req.getServerName();
-	}
-
-	class LoginForm extends Form<Void> {
+	class LoginForm extends StatelessForm<Void> {
 		private static final long serialVersionUID = 1L;
 
 		public LoginForm(String id) {
 			super(id);
+
+			// 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());
+			}
+			
+			tryAutomaticLogin();
 		}
 
 		@Override
@@ -82,20 +83,16 @@
 
 	private void loginUser(User user) {
 		if (user != null) {
-			GitBlitWebSession session = GitBlitWebSession.get();
+			// Set the user into the session
+			GitBlitWebSession.get().setUser(user);
 
 			// Set Cookie
 			WebResponse response = (WebResponse) getRequestCycle().getResponse();
 			GitBlit.self().setCookie(response, user);
 
-			// track user object so that we do not have to continue
-			// re-authenticating on each request.
-			session.setUser(user);
-
-			// Redirect to original page OR to first available tab
 			if (!continueToOriginalDestination()) {
 				// Redirect to home page
-				setResponsePage(session.getApplication().getHomePage());
+				setResponsePage(getApplication().getHomePage());
 			}
 		}
 	}

--
Gitblit v1.9.1