package org.nocket.component.panel.login; import org.apache.wicket.Page; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; import org.nocket.component.form.BeanValidationForm; // TODO: Auto-generated Javadoc /** * Abstract panel with the login form. * * @author blaz02 * */ @SuppressWarnings("serial") public abstract class LoginPanel extends Panel { /** * Instantiates a new login panel. * * @param id the id * @param model the model */ public LoginPanel(String id, IModel<UserLoginData> model) { super(id, model); final TextField<String> userName = new TextField<String>("username"); final PasswordTextField<String> password = new PasswordTextField<String>("password"); final Label authError = new Label("autherror", new ResourceModel("autherror.message", null)); authError.setVisible(false); final Form<UserLoginData> signinform = new BeanValidationForm<UserLoginData>("loginform", model) { protected void onError() { authError.setVisible(false); } }; signinform.add(userName); signinform.add(password); signinform.add(authError); signinform.add(new Button("login") { public void onSubmit() { final UserLoginData userLoginData = signinform.getModelObject(); if (LoginPanel.this.doAuthentication(userLoginData)) { continueToOriginalDestination(); setResponsePage(getDefaultRedirectPage()); } else { authError.setVisible(true); } } }); add(signinform); } /** * Name og the page, wher the user will be redirected after. * * @return the default redirect page */ protected Class<? extends Page> getDefaultRedirectPage() { return getApplication().getHomePage(); } /** * Method which performs authorization of the user. * * @param userLogin the user login * @return True if authorization was successful. False otherwise. */ public abstract boolean doAuthentication(UserLoginData userLogin); /** * The Class PasswordTextField. * * @param <T> the generic type */ class PasswordTextField<T> extends TextField<T> { /** The Constant serialVersionUID. */ private static final long serialVersionUID = 1L; /** * Instantiates a new password text field. * * @param id the id */ public PasswordTextField(String id) { super(id); } /* (non-Javadoc) * @see org.apache.wicket.markup.html.form.TextField#getInputType() */ @Override protected String getInputType() { return "password"; } } }