if (session.getMaxInactiveInterval() != inactiveInterval) {
session.setMaxInactiveInterval(inactiveInterval);
}
//try to get user from session
User user = (User) session
.getAttribute(IConst.SESSION.USER_KEY);
if (user != null) {
// check that this user(or session) was not kicked by admin
ForumDAO dao = ForumDAO.getInstance();
try {
if (!dao.isEntryExist(session.getId())) {
application.log("AutoLoginFilter: Entry for login="
+ user.getName()
+ " not found - User is removed ");
session.removeAttribute(IConst.SESSION.USER_KEY);
user = null;
}
} catch (SQLException sqle) {
throw new ServletException(sqle);
}
}
if ((user == null)
|| (IConst.VALUES.TRUE.equals(Configurator
.getInstance().get(
IConst.CONFIG.ENABLE_EXT_SIGN_ON)) && (user
.getStatus() == 0))) {
if (IConst.VALUES.TRUE.equals(Configurator.getInstance()
.get(IConst.CONFIG.ENABLE_AUTO_LOGIN))
&& (user == null)) {
//try to get user from autologin cookie
user = getUserFromCookie(request);
application
.log("AutoLoginFilter: try to get user from autologin cookie");
}
if (IConst.VALUES.TRUE.equals(Configurator.getInstance()
.get(IConst.CONFIG.ENABLE_EXT_SIGN_ON))
&& ((user == null) || (user.getStatus() == 0))) {
//try to get external user from session
application
.log("AutoLoginFilter: try to get external user ");
user = getExternalUser(request);
}
if (user == null) {
//set empty user for guest's logon
application
.log("AutoLoginFilter: user isn't loaded ,so sign on as guest ");
user = new User(req.getRemoteAddr());
}
// save user bean in session
session.setAttribute(IConst.SESSION.USER_KEY, user);
}
if (IConst.VALUES.TRUE.equals(Configurator.getInstance().get(
IConst.CONFIG.ENABLE_EXT_SIGN_ON))
&& (user.getName() != null)
&& (user.getInfo().getEmail() == null)) {
// forward to editInfo action if external user have not
// filled info
if (request.getRequestURI().indexOf(SAVE_PROFILE_ACTION_PATH) < 0) {
application
.log("AutoLoginFilter: info is empty for external user with login="
+ user.getName()
+ ", so forward to "
+ _editInfo);
_config.getServletContext().getRequestDispatcher(
_editInfo).forward(req, res);