/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.web;
import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.cycle.RequestCycle;
import org.geoserver.security.AdminRequest;
/**
* Wicket callback that sets the {@link AdminRequest} thread local.
*
* @author Justin Deoliveira, OpenGeo
*
*/
public class AdminRequestWicketCallback implements WicketCallback {
@Override
public void onBeginRequest() {
AdminRequest.start(this);
}
@Override
public void onEndRequest() {
AdminRequest.finish();
}
@Override
public void onAfterTargetsDetached() {
}
@Override
public void onRequestTargetSet(Class<? extends IRequestablePage> requestTarget) {
// for non secured page requests we abort the admin request since they are meant to be
// accessible anonymously, so we don't consider this an admin request
if (requestTarget == null || !(GeoServerSecuredPage.class.isAssignableFrom(requestTarget) ||
GeoServerHomePage.class.isAssignableFrom(requestTarget))) {
AdminRequest.abort();
}
}
@Override
public void onRuntimeException(RequestCycle cycle, Exception ex) {
// nothing to do
}
}