package hu.sch.web.idm.pages; import hu.sch.services.AccountManager; import hu.sch.services.exceptions.PekEJBException; import hu.sch.web.kp.KorokPage; import javax.inject.Inject; import org.apache.wicket.RestartResponseException; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.RequiredTextField; import org.apache.wicket.markup.html.form.StatelessForm; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.validation.validator.EmailAddressValidator; /** * Page for password and username reminder. * * @author aldaris * @author balo */ public class CredentialsReminder extends KorokPage { private enum Page { USERNAME, PASSWORD; @Override public String toString() { return super.toString().toLowerCase(); } } // private static final String PAGE_PARAM = "p"; @Inject protected AccountManager accountManager; private final Page currentPage; // private String mail; public CredentialsReminder() { this(new PageParameters().add(PAGE_PARAM, Page.USERNAME.toString())); } public CredentialsReminder(final PageParameters params) { if (getRemoteUser() != null) { getSession().error(getString("err.ReminderAlreadySignedIn")); throw new RestartResponseException(getApplication().getHomePage()); } Page p; try { p = Page.valueOf(params.get(PAGE_PARAM).toString().toUpperCase()); } catch (IllegalArgumentException ex) { p = Page.USERNAME; //default } currentPage = p; } @Override protected void onInitialize() { super.onInitialize(); setHeaderLabelText(getString("headerLabel." + currentPage)); add(new Label("notifyLabel", getString("notifyLabel." + currentPage))); Form<Void> reminderForm = new StatelessForm<Void>("reminderForm") { @Override protected void onSubmit() { try { if (sendReminder(currentPage)) { info(getString("info.ReminderSent")); } else { error(getString("err.MailError")); } } catch (PekEJBException ex) { parametrizedErrorMessage(ex); } } }; final TextField<String> mailTF = new RequiredTextField<>("mail", new PropertyModel<String>(this, "mail")); mailTF.add(EmailAddressValidator.getInstance()); reminderForm.add(mailTF); add(reminderForm); } private boolean sendReminder(final Page currentPage) throws PekEJBException { switch (currentPage) { case PASSWORD: return accountManager.sendLostPasswordChangeLink(mail); default: return accountManager.sendUserNameReminder(mail); } } }