/**
*
*/
package net.conselldemallorca.helium.webapp.mvc.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import net.conselldemallorca.helium.core.model.dto.PersonaDto;
import net.conselldemallorca.helium.core.model.service.PluginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
/**
* Interceptor per guardar a la sessiĆ³ les dades de la persona
*
* @author Limit Tecnologies <limit@limit.es>
*/
public class PersonaInterceptor extends HandlerInterceptorAdapter {
public static final String VARIABLE_SESSIO_PERSONA = "dadesPersona";
private PluginService pluginService;
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
if (request.getUserPrincipal() != null) {
String usuariCodi = request.getUserPrincipal().getName();
HttpSession session = request.getSession();
PersonaDto persona = (PersonaDto)session.getAttribute(VARIABLE_SESSIO_PERSONA);
if (persona == null) {
persona = pluginService.findPersonaAmbCodi(usuariCodi);
persona.setAdmin(request.isUserInRole("ROLE_ADMIN") || request.isUserInRole("HEL_ADMIN"));
session.setAttribute(VARIABLE_SESSIO_PERSONA, persona);
}
}
return true;
}
@Autowired
public void setPluginService(PluginService pluginService) {
this.pluginService = pluginService;
}
}