boolean isValid = false;
boolean isSuperAdmin = false;
try {
JahiaUser theUser = (JahiaUser) session.getAttribute(ProcessingContext.SESSION_USER);
if (JahiaUserManagerService.isGuest(theUser)) {
return false;
}
JahiaSite theSite = (JahiaSite) session.getAttribute(ProcessingContext.SESSION_SITE);
if (theSite != null && !StringUtils.isEmpty(theSite.getSiteKey())) {
JahiaGroup theGroup = ServicesRegistry.getInstance().getJahiaGroupManagerService().getAdministratorGroup(theSite.getID());
if (hasSitePermission("administrationAccess",theSite.getSiteKey()) ||
hasServerPermission("administrationAccess") || (theGroup!=null && theGroup.isMember(theUser))) {
// check if the user is a super admin or not...
JahiaGroup superAdminGroup = ServicesRegistry.getInstance().getJahiaGroupManagerService().getAdministratorGroup(SUPERADMIN_SITE_ID);
if (superAdminGroup.isMember(theUser)) {
isSuperAdmin = true;
}
session.setAttribute(CLASS_NAME + "isSuperAdmin", isSuperAdmin);
session.setAttribute(CLASS_NAME + "manageSiteID", theSite.getID());
session.setAttribute(CLASS_NAME + "accessGranted", Boolean.TRUE);
session.setAttribute(CLASS_NAME + "jahiaLoginUsername", theUser.getUsername());
logger.debug("Silent login granted: user " + theUser.getUsername() + " has valid login session.");
isValid = true;
} else {
logger.debug("Couldn't validate login session for: " + theUser.getUsername());
}
} else if (theUser.isAdminMember(0)) {
session.setAttribute(CLASS_NAME + "isSuperAdmin", Boolean.TRUE);
session.setAttribute(CLASS_NAME + "manageSiteID", 0);
session.setAttribute(CLASS_NAME + "accessGranted", Boolean.TRUE);
session.setAttribute(CLASS_NAME + "jahiaLoginUsername", theUser.getUsername());
isValid = true;
}
} catch (Exception e) {
logger.error("Exception in isValidLoginSession", e);