* @return The results of the method execution
*/
public Object doFilter(Object obj, Method method, Object[] params, AjaxFilterChain chain) throws Exception {
log.log(Level.DEBUG, "In dwrFilter, about to execute: " + method.getName() + "() on " + obj);
LoginAnswer loginAnswer;
HttpServletResponse res = WebContextFactory.get().getHttpServletResponse();
Object reply = null;
// Get the Dispatcher
Dispatcher disp = Dispatcher.getInstance();
if (disp != null) {
HttpServletRequest req = WebContextFactory.get().getHttpServletRequest();
//User id is always sent as the first parameter
String userId = (String)params[0];
// needed to prevent problems when user enters username as 'userid '
if (null != userId) {
userId = userId.trim();
}
loginAnswer = disp.isActiveForAjaxInterfaceUpdates(userId, req);
// If the user is active & has needed service
if (LoginAnswer.ACTIVE.equals(loginAnswer.getStatus())) {
//Execute the method
reply = chain.doFilter(obj, method, params);
log.log(Level.DEBUG, "Executed: " + method.getName() + "() giving " + reply);
} else {
// user not logged in or not active
res.getWriter().write(NOACCESS);
abuseLog.log(Level.INFO, "User: " + userId + " not logged in, status: " + loginAnswer.getStatus());
}
} else {
// no disp
log.log(Level.ERROR, "Dispatcher not found, are you still in session?");