package fr.openwide.core.showcase.web.application.navigation.page; import org.apache.wicket.markup.head.CssHeaderItem; import org.apache.wicket.markup.head.IHeaderResponse; 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.showcase.web.application.util.template.styles.SignInLessCssResourceReference; import fr.openwide.core.wicket.more.AbstractCoreSession; import fr.openwide.core.wicket.more.application.CoreWicketAuthenticatedApplication; 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; import fr.openwide.core.wicket.more.security.page.LoginSuccessPage; public class SignInPage extends CoreWebPage { private static final long serialVersionUID = 5503959273448832421L; private static final Logger LOGGER = LoggerFactory.getLogger(SignInPage.class); private FormComponent<String> userNameField; private FormComponent<String> passwordField; public SignInPage() { 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("signIn.error.authentication")); } catch (UsernameNotFoundException e) { session.error(getString("signIn.error.authentication")); } catch (DisabledException e) { session.error(getString("signIn.error.userDisabled")); } catch (RuntimeException e) { LOGGER.error("Erreur inconnue lors de l'authentification de l'utilisateur", e); session.error(getString("signIn.error.unknown")); } if (success) { throw LoginSuccessPage.linkDescriptor().newRestartResponseException(); } else { throw CoreWicketAuthenticatedApplication.get().getSignInPageLinkDescriptor() .newRestartResponseException(); } } }; add(signInForm); userNameField = new RequiredTextField<String>("userName", Model.of("")); userNameField.setLabel(new ResourceModel("signIn.login")); userNameField.add(new LabelPlaceholderBehavior()); userNameField.setOutputMarkupId(true); signInForm.add(userNameField); passwordField = new PasswordTextField("password", Model.of("")).setRequired(true); passwordField.setLabel(new ResourceModel("signIn.password")); passwordField.add(new LabelPlaceholderBehavior()); signInForm.add(passwordField); } @Override public void renderHead(IHeaderResponse response) { super.renderHead(response); // response.render(JavaScriptHeaderItem.forReference(CoreJavaScriptResourceReference.get())); response.render(CssHeaderItem.forReference(SignInLessCssResourceReference.get())); } }