package fr.openwide.core.wicket.more.console.navigation.page; import org.apache.wicket.Application; import org.apache.wicket.RestartResponseException; import org.apache.wicket.markup.head.CssHeaderItem; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.markup.html.form.PasswordTextField; import org.apache.wicket.markup.html.form.RequiredTextField; import org.apache.wicket.model.Model; import org.apache.wicket.model.ResourceModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.DisabledException; import org.springframework.security.core.userdetails.UsernameNotFoundException; import fr.openwide.core.wicket.more.AbstractCoreSession; import fr.openwide.core.wicket.more.console.template.style.ConsoleSignInLessCssResourceReference; import fr.openwide.core.wicket.more.link.descriptor.IPageLinkDescriptor; import fr.openwide.core.wicket.more.link.descriptor.builder.LinkDescriptorBuilder; import fr.openwide.core.wicket.more.markup.html.CoreWebPage; import fr.openwide.core.wicket.more.markup.html.feedback.AnimatedGlobalFeedbackPanel; import fr.openwide.core.wicket.more.markup.html.form.LabelPlaceholderBehavior; public class ConsoleSignInPage extends CoreWebPage { private static final long serialVersionUID = 3401416708867386953L; private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleSignInPage.class); public static final IPageLinkDescriptor linkDescriptor() { return LinkDescriptorBuilder.start() .page(ConsoleSignInPage.class); } private FormComponent<String> userNameField; private FormComponent<String> passwordField; public ConsoleSignInPage() { super(); add(new AnimatedGlobalFeedbackPanel("feedback")); Form<Void> signInForm = new Form<Void>("signInForm") { private static final long serialVersionUID = 1L; @Override protected void onSubmit() { AbstractCoreSession<?> session = AbstractCoreSession.get(); boolean success = false; try { session.signIn(userNameField.getModelObject(), passwordField.getModelObject()); success = true; } catch (BadCredentialsException e) { session.error(getString("console.signIn.error.authentication")); } catch (UsernameNotFoundException e) { session.error(getString("console.signIn.error.authentication")); } catch (DisabledException e) { session.error(getString("console.signIn.error.userDisabled")); } catch (Exception e) { LOGGER.error("Erreur inconnue lors de l'authentification de l'utilisateur", e); session.error(getString("console.signIn.error.unknown")); } if (success) { throw new RestartResponseException(ConsoleLoginSuccessPage.class); } else { throw new RestartResponseException(ConsoleLoginFailurePage.class); } } }; add(signInForm); userNameField = new RequiredTextField<String>("userName", Model.of("")); userNameField.setLabel(new ResourceModel("console.signIn.userName")); userNameField.add(new LabelPlaceholderBehavior()); userNameField.setOutputMarkupId(true); signInForm.add(userNameField); passwordField = new PasswordTextField("password", Model.of("")).setRequired(true); passwordField.setLabel(new ResourceModel("console.signIn.password")); passwordField.add(new LabelPlaceholderBehavior()); signInForm.add(passwordField); } @Override public void renderHead(IHeaderResponse response) { super.renderHead(response); response.render(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference())); response.render(CssHeaderItem.forReference(ConsoleSignInLessCssResourceReference.get())); } }