package fr.openwide.core.wicket.more.console.maintenance.authentication.page;
import org.apache.wicket.Application;
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.RequiredTextField;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import fr.openwide.core.jpa.security.business.person.model.GenericUser;
import fr.openwide.core.jpa.security.business.person.service.IGenericUserService;
import fr.openwide.core.spring.util.StringUtils;
import fr.openwide.core.wicket.more.AbstractCoreSession;
import fr.openwide.core.wicket.more.console.maintenance.template.ConsoleMaintenanceTemplate;
import fr.openwide.core.wicket.more.console.template.ConsoleTemplate;
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.form.LabelPlaceholderBehavior;
import fr.openwide.core.wicket.more.security.page.LoginSuccessPage;
public class ConsoleMaintenanceAuthenticationPage<U extends GenericUser<U, ?>> extends ConsoleMaintenanceTemplate {
private static final long serialVersionUID = 3401416708867386953L;
@SpringBean
private IGenericUserService<U> genericUserService;
public static final IPageLinkDescriptor linkDescriptor() {
return LinkDescriptorBuilder.start()
.page(ConsoleMaintenanceAuthenticationPage.class);
}
private FormComponent<String> userNameField;
public ConsoleMaintenanceAuthenticationPage(PageParameters parameters) {
super(parameters);
addHeadPageTitleKey("console.maintenance.authentication");
Form<Void> signInForm = new Form<Void>("signInForm") {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit() {
if (StringUtils.hasText(userNameField.getModelObject())) {
U genericUser = genericUserService.getByUserName(userNameField.getModelObject());
if (genericUser != null) {
AbstractCoreSession.get().signInAs(userNameField.getModelObject());
AbstractCoreSession.get().success(new StringResourceModel("console.authentication.success")
.setParameters(userNameField.getModelObject()).getObject());
} else {
AbstractCoreSession.get().error(getString("signIn.error.unknown"));
}
} else {
AbstractCoreSession.get().error(getString("signIn.error.unknown"));
}
throw LoginSuccessPage.linkDescriptor().newRestartResponseException();
}
};
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);
}
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference()));
response.render(CssHeaderItem.forReference(ConsoleSignInLessCssResourceReference.get()));
}
@Override
protected Class<? extends ConsoleTemplate> getMenuItemPageClass() {
return ConsoleMaintenanceAuthenticationPage.class;
}
}