package fr.openwide.maven.artifact.notifier.web.application.navigation.page;
import org.springframework.security.web.savedrequest.SavedRequest;
import fr.openwide.core.spring.util.StringUtils;
import fr.openwide.core.wicket.more.AbstractCoreSession;
import fr.openwide.core.wicket.more.markup.html.CoreWebPage;
import fr.openwide.core.wicket.more.request.cycle.RequestCycleUtils;
import fr.openwide.maven.artifact.notifier.web.application.MavenArtifactNotifierSession;
public abstract class AbstractLoginSuccessPage extends CoreWebPage {
private static final long serialVersionUID = -875304387617628398L;
private static final String WICKET_BEHAVIOR_LISTENER_URL_FRAGMENT = "IBehaviorListener";
protected void redirectToSavedPage() {
AbstractCoreSession<?> session = AbstractCoreSession.get();
String redirectUrl = null;
if (StringUtils.hasText(session.getRedirectUrl())) {
redirectUrl = session.getRedirectUrl();
} else {
Object savedRequest = RequestCycleUtils.getCurrentContainerRequest().getSession()
.getAttribute(MavenArtifactNotifierSession.SPRING_SECURITY_SAVED_REQUEST);
if (savedRequest instanceof SavedRequest) {
redirectUrl = ((SavedRequest) savedRequest).getRedirectUrl();
}
RequestCycleUtils.getCurrentContainerRequest().getSession()
.removeAttribute(MavenArtifactNotifierSession.SPRING_SECURITY_SAVED_REQUEST);
}
if (isUrlValid(redirectUrl)) {
redirect(redirectUrl);
} else {
redirect(DashboardPage.class);
}
}
protected boolean isUrlValid(String url) {
return StringUtils.hasText(url) && !StringUtils.contains(url, WICKET_BEHAVIOR_LISTENER_URL_FRAGMENT);
}
}