You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LoginPage.java 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package com.gitblit.wicket;
  2. import javax.servlet.http.Cookie;
  3. import javax.servlet.http.HttpServletRequest;
  4. import org.apache.wicket.PageParameters;
  5. import org.apache.wicket.markup.html.WebPage;
  6. import org.apache.wicket.markup.html.basic.Label;
  7. import org.apache.wicket.markup.html.form.Form;
  8. import org.apache.wicket.markup.html.form.PasswordTextField;
  9. import org.apache.wicket.markup.html.form.TextField;
  10. import org.apache.wicket.markup.html.image.ContextImage;
  11. import org.apache.wicket.markup.html.panel.FeedbackPanel;
  12. import org.apache.wicket.model.IModel;
  13. import org.apache.wicket.model.Model;
  14. import org.apache.wicket.protocol.http.WebRequest;
  15. import org.apache.wicket.protocol.http.WebResponse;
  16. import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
  17. import com.gitblit.Constants;
  18. public class LoginPage extends WebPage {
  19. IModel<String> username = new Model<String>("");
  20. IModel<String> password = new Model<String>("");
  21. public LoginPage(PageParameters params) {
  22. super(params);
  23. tryAutomaticLogin();
  24. add(new Label("title", getServerName()));
  25. add(new ContextImage("logo", "gitblt2.png"));
  26. add(new Label("name", Constants.NAME));
  27. Form<Void> loginForm = new LoginForm("loginForm");
  28. loginForm.add(new TextField<String>("username", username));
  29. loginForm.add(new PasswordTextField("password", password));
  30. loginForm.add(new FeedbackPanel("feedback"));
  31. add(loginForm);
  32. }
  33. protected String getServerName() {
  34. ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest();
  35. HttpServletRequest req = servletWebRequest.getHttpServletRequest();
  36. return req.getServerName();
  37. }
  38. class LoginForm extends Form<Void> {
  39. private static final long serialVersionUID = 1L;
  40. public LoginForm(String id) {
  41. super(id);
  42. }
  43. @Override
  44. public void onSubmit() {
  45. String username = LoginPage.this.username.getObject();
  46. char [] password = LoginPage.this.password.getObject().toCharArray();
  47. User user = GitBlitWebApp.get().authenticate(username, password);
  48. if (user == null)
  49. error("Invalid username or password!");
  50. else
  51. loginUser(user);
  52. }
  53. }
  54. private void tryAutomaticLogin() {
  55. User user = null;
  56. // Grab cookie from Browser Session
  57. Cookie[] cookies = ((WebRequest) getRequestCycle().getRequest()).getCookies();
  58. if (cookies != null && cookies.length > 0) {
  59. user = GitBlitWebApp.get().authenticate(cookies);
  60. }
  61. // Login the user
  62. loginUser(user);
  63. }
  64. private void loginUser(User user) {
  65. if (user != null) {
  66. GitBlitWebSession session = GitBlitWebSession.get();
  67. // Set Cookie
  68. WebResponse response = (WebResponse) getRequestCycle().getResponse();
  69. GitBlitWebApp.get().setCookie(response, user);
  70. // track user object so that we do not have to continue
  71. // re-authenticating on each request.
  72. session.setUser(user);
  73. // Redirect to original page OR to first available tab
  74. if (!continueToOriginalDestination()) {
  75. // Redirect to home page
  76. setResponsePage(session.getApplication().getHomePage());
  77. }
  78. }
  79. }
  80. }