package fr.openwide.core.wicket.more.security.page;
import org.apache.wicket.Page;
import fr.openwide.core.spring.util.StringUtils;
import fr.openwide.core.wicket.more.AbstractCoreSession;
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.request.cycle.RequestCycleUtils;
public class LoginSuccessPage extends CoreWebPage {
private static final long serialVersionUID = -875304387617628398L;
public static final String WICKET_BEHAVIOR_LISTENER_URL_FRAGMENT = "IBehaviorListener";
public static final IPageLinkDescriptor linkDescriptor() {
return LinkDescriptorBuilder.start().page(LoginSuccessPage.class);
}
public LoginSuccessPage() {
}
@Override
protected void onInitialize() {
super.onInitialize();
redirectToSavedPage();
}
protected void redirectToSavedPage() {
AbstractCoreSession<?> session = AbstractCoreSession.get();
@SuppressWarnings("deprecation")
IPageLinkDescriptor pageLinkDescriptor = session.getRedirectPageLinkDescriptor();
if (pageLinkDescriptor != null) {
throw pageLinkDescriptor.newRestartResponseException();
}
@SuppressWarnings("deprecation")
String redirectUrl = session.consumeRedirectUrl();
if (!StringUtils.hasText(redirectUrl)) {
redirectUrl = RequestCycleUtils.getSpringSecuritySavedRequest();
}
if (isUrlValid(redirectUrl)) {
redirect(redirectUrl);
} else {
redirect(getDefaultRedirectPage());
}
}
protected Class<? extends Page> getDefaultRedirectPage() {
return getApplication().getHomePage();
}
protected boolean isUrlValid(String url) {
return StringUtils.hasText(url);
// && !StringUtils.contains(url, WICKET_BEHAVIOR_LISTENER_URL_FRAGMENT) : Wicket a l'air de s'en sortir et on a vite des problèmes sur Sitra si on vire ces éléments
}
}