package sk.serviceintegra.domenovac.client.page.finalpage.login; import org.apache.wicket.PageParameters; import org.apache.wicket.Session; 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.FormComponent; import org.apache.wicket.markup.html.form.StatelessForm; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.form.validation.AbstractFormValidator; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.validation.validator.EmailAddressValidator; import sk.serviceintegra.domenovac.client.application.session.DomenovacSkSession; import sk.serviceintegra.domenovac.client.common.helper.DomenovacSkHelper; import sk.serviceintegra.domenovac.client.page.basepage.leftmenu.LeftMenuPage; import sk.serviceintegra.domenovac.client.page.finalpage.home.HomePage; import sk.serviceintegra.domenovac.client.page.finalpage.lostpassword.LostPasswordPage; import sk.serviceintegra.domenovac.client.service.ServiceLocator; import sk.serviceintegra.domenovac.middle.dto.mpp.DtoLogin; import sk.serviceintegra.domenovac.middle.service.api.IDomenovac; import sk.serviceintegra.wisa.common.headercontributor.ExtendedHeaderContributor; import sk.serviceintegra.wisa.component.formcomponent.password.ExtendedPasswordTextField; import sk.serviceintegra.wisa.component.formcomponent.textfield.ExtendedTextField; import sk.serviceintegra.wisa.component.link.textlink.BookmarkablePageTextLink; import sk.serviceintegra.wisa.helper.WicketHelper; /** * Prihlasovacia stranka. * * @author simik */ public class LoginPage extends LeftMenuPage { private String email; private String password; private DtoLogin dtoLogin; public LoginPage(PageParameters pageParams) { super(pageParams); //CSS addCss(); //HEADER wicket:message //formular StatelessForm form = new StatelessForm("form"); add(form); //label: email Label emailLabel = new Label("emailLabel", new ResourceModel("emailLabel")); form.add(emailLabel); //textfield: email ExtendedTextField emailTextField = new ExtendedTextField("emailTextField", new PropertyModel(this, "email")); emailTextField.setLabel(new ResourceModel("emailLabel")); emailTextField.setRequired(true); emailTextField.add(EmailAddressValidator.getInstance()); form.add(emailTextField); //label: password Label passwordLabel = new Label("passwordLabel", new ResourceModel("passwordLabel")); form.add(passwordLabel); //textfield: password ExtendedPasswordTextField passwordTextField = new ExtendedPasswordTextField("passwordTextField", new PropertyModel(this, "password")); passwordTextField.setLabel(new ResourceModel("passwordLabel")); passwordTextField.setRequired(true); form.add(passwordTextField); //FORMULAROVY VALIDATOR form.add(new LoginValidator(emailTextField, passwordTextField)); //link: lost password BookmarkablePageTextLink lostPasswordPageLink = new BookmarkablePageTextLink("lostPasswordPageLink", LostPasswordPage.class, new StringResourceModel("lostCredentials", this, null)); form.add(lostPasswordPageLink); //submit button Button submitButton = new Button("submitButton", new ResourceModel("prihlasit")){ private static final long serialVersionUID = 1L; @Override public void onSubmit() { try { DomenovacSkSession session = (DomenovacSkSession)Session.get(); session.setLogin(dtoLogin); if (!continueToOriginalDestination()){ setResponsePage(HomePage.class); } } catch (Exception e) { WicketHelper.logErrorAndThrowRuntimeException(e); } } }; form.add(submitButton); } private void addCss(){ add(ExtendedHeaderContributor.forCss(LoginPage.class, "css/LoginPage.css")); } // SETTERS & GETTERS //=================================================================== public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } // VALIDATOR PRE MENO/HESLO //======================================================================== class LoginValidator extends AbstractFormValidator{ private static final long serialVersionUID = 1L; private TextField emailTextField; private TextField hesloTextField; public LoginValidator(TextField emailTextField, TextField heshloTextField) { super(); this.emailTextField = emailTextField; this.hesloTextField = heshloTextField; } public FormComponent[] getDependentFormComponents() { return new FormComponent[]{ emailTextField, hesloTextField}; } public void validate(Form form) { IDomenovac service = ServiceLocator.getDomenovacService(); try { String meno = emailTextField.getConvertedInput(); String heslo = hesloTextField.getConvertedInput(); dtoLogin = service.login(meno, heslo); //uzivatela hned prihlasime DomenovacSkHelper.getSession().setLogin(dtoLogin); } catch (Exception e) { StringResourceModel messageModel = new StringResourceModel("loginErrorMessage", LoginPage.this, null); String message = messageModel.getObject(); form.error(message); } } } }