From ea936aa63d7a756ca7d0284f76b830656d1e8918 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 27 Sep 2011 09:49:57 -0400 Subject: [PATCH] Documentation. --- src/com/gitblit/wicket/pages/LoginPage.java | 42 +++++++++++++++++++++++++++++++++++++----- 1 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/com/gitblit/wicket/pages/LoginPage.java b/src/com/gitblit/wicket/pages/LoginPage.java index 56e979c..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,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)); + add(new Label("name", GitBlit.getString(Keys.web.siteName, Constants.NAME))); StatelessForm<Void> loginForm = new StatelessForm<Void>("loginForm") { - + private static final long serialVersionUID = 1L; @Override @@ -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