James Moger
2011-05-19 00afd77a2182ece3d9522d41b86b4ddd7e132288
src/com/gitblit/wicket/LoginPage.java
@@ -1,24 +1,24 @@
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;
import com.gitblit.wicket.models.UserModel;
public class LoginPage extends WebPage {
@@ -30,8 +30,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");
@@ -40,26 +39,29 @@
      loginForm.add(new FeedbackPanel("feedback"));
      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
      public void onSubmit() {
         String username = LoginPage.this.username.getObject();
         char [] password = LoginPage.this.password.getObject().toCharArray();
         char[] password = LoginPage.this.password.getObject().toCharArray();
         User user = GitBlit.self().authenticate(username, password);
         UserModel user = GitBlit.self().authenticate(username, password);
         if (user == null)
            error("Invalid username or password!");
         else
@@ -68,7 +70,7 @@
   }
   private void tryAutomaticLogin() {
      User user = null;
      UserModel user = null;
      // Grab cookie from Browser Session
      Cookie[] cookies = ((WebRequest) getRequestCycle().getRequest()).getCookies();
@@ -80,22 +82,18 @@
      loginUser(user);
   }
   private void loginUser(User user) {
   private void loginUser(UserModel 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());
         }
      }
   }