/* ===============================================================================
*
* Part of the InfoGlue Content Management Platform (www.infoglue.org)
*
* ===============================================================================
*
* Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by the
* Free Software Foundation. See the file LICENSE.html for more information.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
* Place, Suite 330 / Boston, MA 02111-1307 / USA.
*
* ===============================================================================
*/
package org.infoglue.deliver.controllers.kernel.impl.simple;
import java.security.Principal;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.exolab.castor.jdo.Database;
import org.infoglue.cms.controllers.kernel.impl.simple.GroupPropertiesController;
import org.infoglue.cms.controllers.kernel.impl.simple.RolePropertiesController;
import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeController;
import org.infoglue.cms.controllers.kernel.impl.simple.UserControllerProxy;
import org.infoglue.cms.controllers.kernel.impl.simple.UserPropertiesController;
import org.infoglue.cms.entities.content.DigitalAsset;
import org.infoglue.cms.entities.management.GroupProperties;
import org.infoglue.cms.entities.management.LanguageVO;
import org.infoglue.cms.entities.management.RoleProperties;
import org.infoglue.cms.entities.management.UserProperties;
import org.infoglue.cms.entities.structure.SiteNode;
import org.infoglue.cms.exception.SystemException;
import org.infoglue.cms.security.AuthenticationModule;
import org.infoglue.cms.security.InfoGlueAuthenticationFilter;
import org.infoglue.cms.security.InfoGlueGroup;
import org.infoglue.cms.security.InfoGluePrincipal;
import org.infoglue.cms.security.InfoGlueRole;
import org.infoglue.deliver.applications.databeans.DeliveryContext;
/**
* @author Mattias Bogeblad
*
* This class is the controller for extranet functionality. Authentication, authorization and stuff like that
* is what it does best!
*/
public class ExtranetController extends BaseDeliveryController
{
private final static Logger logger = Logger.getLogger(ExtranetController.class.getName());
/**
* Private constructor to enforce factory-use
*/
private ExtranetController()
{
}
/**
* Factory method
*/
public static ExtranetController getController()
{
return new ExtranetController();
}
/**
* This method autenticates a user. It takes a username and checks first that it is defined as a
* infoglue extranet user.
*/
public Principal getAuthenticatedPrincipal(Database db, Map request) throws Exception
{
Principal principal = null;
try
{
String authenticatorClass = InfoGlueAuthenticationFilter.authenticatorClass;
String authorizerClass = InfoGlueAuthenticationFilter.authorizerClass;
String invalidLoginUrl = InfoGlueAuthenticationFilter.invalidLoginUrl;
String loginUrl = InfoGlueAuthenticationFilter.loginUrl;
String serverName = InfoGlueAuthenticationFilter.serverName;
Properties extraProperties = InfoGlueAuthenticationFilter.extraProperties;
String casRenew = InfoGlueAuthenticationFilter.casRenew;
String casServiceUrl = InfoGlueAuthenticationFilter.casServiceUrl;
String casValidateUrl = InfoGlueAuthenticationFilter.casValidateUrl;
String casProxyValidateUrl = InfoGlueAuthenticationFilter.casProxyValidateUrl;
AuthenticationModule authenticationModule = (AuthenticationModule)Class.forName(authenticatorClass).newInstance();
authenticationModule.setAuthenticatorClass(authenticatorClass);
authenticationModule.setAuthorizerClass(authorizerClass);
authenticationModule.setInvalidLoginUrl(invalidLoginUrl);
authenticationModule.setLoginUrl(loginUrl);
authenticationModule.setServerName(serverName);
authenticationModule.setExtraProperties(extraProperties);
authenticationModule.setCasRenew(casRenew);
authenticationModule.setCasServiceUrl(casServiceUrl);
authenticationModule.setCasValidateUrl(casValidateUrl);
authenticationModule.setCasProxyValidateUrl(casProxyValidateUrl);
authenticationModule.setTransactionObject(db);
String authenticatedUserName = authenticationModule.authenticateUser(request);
logger.info("authenticatedUserName:" + authenticatedUserName);
if(authenticatedUserName != null)
principal = UserControllerProxy.getController(db).getUser(authenticatedUserName);
logger.info("principal:" + principal);
}
catch(Exception e)
{
//return new InfoGluePrincipal("anonymous", "anonymous", "anonymous", "anonymous", "anonymous", null, null, new HashMap(), true, null);
logger.error("An error occurred so we should not complete the transaction:" + e, e);
throw new SystemException("The login process failed: " + e.getMessage(), e);
}
return principal;
}
/**
* This method autenticates a user. It takes a username and checks first that it is defined as a
* infoglue extranet user.
*/
public Principal getAuthenticatedPrincipal(Map request, HttpServletRequest httpServletRequest) throws Exception
{
Principal principal = null;
try
{
String authenticatedUserName = AuthenticationModule.getAuthenticationModule(null, null, httpServletRequest, false).authenticateUser(request);
logger.info("authenticatedUserName:" + authenticatedUserName);
if(authenticatedUserName != null)
{
principal = UserControllerProxy.getController().getUser(authenticatedUserName);
logger.info("principal:" + principal);
}
}
catch(Exception e)
{
logger.error("An error occurred so we should not complete the transaction:" + e, e);
throw new SystemException("The login process failed: " + e.getMessage(), e);
}
//if(principal == null)
// return new InfoGluePrincipal("root", "root", "root", "root", "root", null, null, new HashMap(), true, null);
return principal;
}
/**
* This method checks if a user has access to an entity. It takes name and id of the entity.
*/
/*
public boolean getIsPrincipalAuthorized(Principal principal, String name, String value, NodeDeliveryController nodeDeliveryController) throws Exception
{
boolean isPrincipalAuthorized = false;
//UserVO userVO = UserController.getController().getUserVO(principal.getName());
List extranetAccessVOList = ExtranetAccessController.getController().getExtranetAccessVOList(name, value);
if(extranetAccessVOList != null && extranetAccessVOList.size() > 0)
{
Iterator extranetAccessVOListIterator = extranetAccessVOList.iterator();
outer: while(extranetAccessVOListIterator.hasNext())
{
ExtranetAccessVO extranetAccessVO = (ExtranetAccessVO)extranetAccessVOListIterator.next();
List roles = ((InfoGluePrincipal)principal).getRoles();
logger.info("ExtranetAccessVO:" + extranetAccessVO.getRoleId());
logger.info("name:" + extranetAccessVO.getName());
logger.info("value:" + extranetAccessVO.getValue());
Iterator rolesIterator = roles.iterator();
while(rolesIterator.hasNext())
{
RoleVO roleVO = (RoleVO)rolesIterator.next();
logger.info("roleVO:" + roleVO.getRoleId());
if(roleVO.getRoleId().intValue() == extranetAccessVO.getRoleId().intValue() && extranetAccessVO.getHasReadAccess().booleanValue())
{
isPrincipalAuthorized = true;
break outer;
}
}
}
}
else
{
if(name.equals("SiteNode"))
{
SiteNodeVO parentSiteNodeVO = nodeDeliveryController.getParentSiteNode(new Integer(value));
if(parentSiteNodeVO != null)
isPrincipalAuthorized = getIsPrincipalAuthorized(principal, name, parentSiteNodeVO.getSiteNodeId().toString(), nodeDeliveryController);
}
}
logger.info("isPrincipalAuthorized:" + isPrincipalAuthorized);
return isPrincipalAuthorized;
}
*/
/**
* This method checks if a user has write access to an entity. It takes name and id of the entity.
*/
/*
public boolean getIsPrincipalAuthorizedForWriteAccess(Principal principal, String name, String value, NodeDeliveryController nodeDeliveryController) throws Exception
{
boolean isPrincipalAuthorized = false;
//UserVO userVO = UserController.getController().getUserVO(principal.getName());
List extranetAccessVOList = ExtranetAccessController.getController().getExtranetAccessVOList(name, value);
if(extranetAccessVOList != null && extranetAccessVOList.size() > 0)
{
Iterator extranetAccessVOListIterator = extranetAccessVOList.iterator();
outer: while(extranetAccessVOListIterator.hasNext())
{
ExtranetAccessVO extranetAccessVO = (ExtranetAccessVO)extranetAccessVOListIterator.next();
List roles = ((InfoGluePrincipal)principal).getRoles();
logger.info("ExtranetAccessVO:" + extranetAccessVO.getRoleId());
logger.info("name:" + extranetAccessVO.getName());
logger.info("value:" + extranetAccessVO.getValue());
Iterator rolesIterator = roles.iterator();
while(rolesIterator.hasNext())
{
RoleVO roleVO = (RoleVO)rolesIterator.next();
logger.info("roleVO:" + roleVO.getRoleId());
if(roleVO.getRoleId().intValue() == extranetAccessVO.getRoleId().intValue() && extranetAccessVO.getHasWriteAccess().booleanValue())
{
isPrincipalAuthorized = true;
break outer;
}
}
}
}
else
{
if(name.equals("SiteNode"))
{
SiteNodeVO parentSiteNodeVO = nodeDeliveryController.getParentSiteNode(new Integer(value));
if(parentSiteNodeVO != null)
isPrincipalAuthorized = getIsPrincipalAuthorizedForWriteAccess(principal, name, parentSiteNodeVO.getSiteNodeId().toString(), nodeDeliveryController);
}
}
logger.info("isPrincipalAuthorized:" + isPrincipalAuthorized);
return isPrincipalAuthorized;
}
*/
/**
* Getting a property for a Principal - used for personalisation.
* This method starts with getting the property on the user and if it does not exist we check out the
* group-properties as well.
*/
/*
public String getPrincipalPropertyValue(Database db, InfoGluePrincipal infoGluePrincipal, String propertyName, Integer languageId, Integer siteNodeId, boolean useLanguageFallback, boolean escapeSpecialCharacters) throws Exception
{
String value = "";
if(infoGluePrincipal == null || propertyName == null)
return null;
Collection userPropertiesList = UserPropertiesController.getController().getUserPropertiesList(infoGluePrincipal.getName(), languageId, db);
Iterator userPropertiesListIterator = userPropertiesList.iterator();
while(userPropertiesListIterator.hasNext())
{
UserProperties userProperties = (UserProperties)userPropertiesListIterator.next();
if(userProperties != null && userProperties.getLanguage().getLanguageId().equals(languageId) && userProperties.getValue() != null && propertyName != null)
{
String propertyXML = userProperties.getValue();
DOMBuilder domBuilder = new DOMBuilder();
Document document = domBuilder.getDocument(propertyXML);
Node node = document.getRootElement().selectSingleNode("attributes/" + propertyName);
if(node != null)
{
value = node.getStringValue();
logger.info("Getting value: " + value);
if(value != null && escapeSpecialCharacters)
value = new VisualFormatter().escapeHTML(value);
break;
}
}
}
if(value.equals(""))
{
List roles = infoGluePrincipal.getRoles();
Iterator rolesIterator = roles.iterator();
while(rolesIterator.hasNext())
{
InfoGlueRole role = (InfoGlueRole)rolesIterator.next();
Collection rolePropertiesList = RolePropertiesController.getController().getRolePropertiesList(role.getName(), languageId, db);
Iterator rolePropertiesListIterator = rolePropertiesList.iterator();
while(rolePropertiesListIterator.hasNext())
{
RoleProperties roleProperties = (RoleProperties)rolePropertiesListIterator.next();
if(roleProperties != null && roleProperties.getLanguage().getLanguageId().equals(languageId) && roleProperties.getValue() != null && propertyName != null)
{
String propertyXML = roleProperties.getValue();
DOMBuilder domBuilder = new DOMBuilder();
Document document = domBuilder.getDocument(propertyXML);
Node node = document.getRootElement().selectSingleNode("attributes/" + propertyName);
if(node != null)
{
value = node.getStringValue();
logger.info("Getting value: " + value);
if(value != null && escapeSpecialCharacters)
value = new VisualFormatter().escapeHTML(value);
break;
}
}
}
}
if(value.equals("") && useLanguageFallback)
{
LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
if(!masterLanguageVO.getLanguageId().equals(languageId))
return getPrincipalPropertyValue(db, infoGluePrincipal, propertyName, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, escapeSpecialCharacters);
}
}
if(value.equals(""))
{
List groups = infoGluePrincipal.getGroups();
Iterator groupsIterator = groups.iterator();
while(groupsIterator.hasNext())
{
InfoGlueGroup group = (InfoGlueGroup)groupsIterator.next();
Collection groupPropertiesList = GroupPropertiesController.getController().getGroupPropertiesList(group.getName(), languageId, db);
Iterator groupPropertiesListIterator = groupPropertiesList.iterator();
while(groupPropertiesListIterator.hasNext())
{
GroupProperties groupProperties = (GroupProperties)groupPropertiesListIterator.next();
if(groupProperties != null && groupProperties.getLanguage().getLanguageId().equals(languageId) && groupProperties.getValue() != null && propertyName != null)
{
String propertyXML = groupProperties.getValue();
DOMBuilder domBuilder = new DOMBuilder();
Document document = domBuilder.getDocument(propertyXML);
Node node = document.getRootElement().selectSingleNode("attributes/" + propertyName);
if(node != null)
{
value = node.getStringValue();
logger.info("Getting value: " + value);
if(value != null && escapeSpecialCharacters)
value = new VisualFormatter().escapeHTML(value);
break;
}
}
}
}
if(value.equals("") && useLanguageFallback)
{
LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
if(!masterLanguageVO.getLanguageId().equals(languageId))
return getPrincipalPropertyValue(db, infoGluePrincipal, propertyName, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, escapeSpecialCharacters);
}
}
return value;
}
*/
/**
* Getting a digitalAsset for a Principal - used for personalisation.
* This method starts with getting the asset on the user and if it does not exist we check out the
* group-properties as well.
*/
public String getPrincipalAssetUrl(Database db, InfoGluePrincipal infoGluePrincipal, String assetKey, Integer languageId, Integer siteNodeId, boolean useLanguageFallback, DeliveryContext deliveryContext) throws Exception
{
String assetUrl = "";
if(infoGluePrincipal == null || assetKey == null)
return null;
Collection userPropertiesList = UserPropertiesController.getController().getUserPropertiesList(infoGluePrincipal.getName(), languageId, db, true);
logger.info("userProperties:" + userPropertiesList.size());
Iterator userPropertiesListIterator = userPropertiesList.iterator();
while(userPropertiesListIterator.hasNext())
{
UserProperties userProperties = (UserProperties)userPropertiesListIterator.next();
//logger.info("userProperties:" + userProperties.getValue());
//logger.info("propertyName:" + propertyName);
logger.info("userProperties:" + userProperties.getValue());
logger.info("assetKey:" + assetKey);
if(userProperties != null && userProperties.getLanguage().getLanguageId().equals(languageId))
{
Collection assets = userProperties.getDigitalAssets();
logger.info("assets:" + assets.size());
Iterator assetsIterator = assets.iterator();
while(assetsIterator.hasNext())
{
DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
logger.info("digitalAsset:" + digitalAsset.getAssetKey());
if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
{
SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetUrl(digitalAsset, siteNode.getRepository(), deliveryContext);
logger.info("assetUrl:" + assetUrl);
break;
}
}
}
}
if(assetUrl.equals(""))
{
List roles = infoGluePrincipal.getRoles();
Iterator rolesIterator = roles.iterator();
while(rolesIterator.hasNext())
{
InfoGlueRole role = (InfoGlueRole)rolesIterator.next();
Collection rolePropertiesList = RolePropertiesController.getController().getRolePropertiesList(role.getName(), languageId, db, true);
Iterator rolePropertiesListIterator = rolePropertiesList.iterator();
while(rolePropertiesListIterator.hasNext())
{
RoleProperties roleProperties = (RoleProperties)rolePropertiesListIterator.next();
if(roleProperties != null && roleProperties.getLanguage().getLanguageId().equals(languageId))
{
Collection assets = roleProperties.getDigitalAssets();
Iterator assetsIterator = assets.iterator();
while(assetsIterator.hasNext())
{
DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
{
SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetUrl(digitalAsset, siteNode.getRepository(), deliveryContext);
break;
}
}
}
}
}
if(assetUrl.equals("") && useLanguageFallback)
{
LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
if(!masterLanguageVO.getLanguageId().equals(languageId))
return getPrincipalAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, deliveryContext);
}
}
if(assetUrl.equals(""))
{
List groups = infoGluePrincipal.getGroups();
Iterator groupsIterator = groups.iterator();
while(groupsIterator.hasNext())
{
InfoGlueGroup group = (InfoGlueGroup)groupsIterator.next();
Collection groupPropertiesList = GroupPropertiesController.getController().getGroupPropertiesList(group.getName(), languageId, db, true);
Iterator groupPropertiesListIterator = groupPropertiesList.iterator();
while(groupPropertiesListIterator.hasNext())
{
GroupProperties groupProperties = (GroupProperties)groupPropertiesListIterator.next();
if(groupProperties != null && groupProperties.getLanguage().getLanguageId().equals(languageId))
{
Collection assets = groupProperties.getDigitalAssets();
Iterator assetsIterator = assets.iterator();
while(assetsIterator.hasNext())
{
DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
{
SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetUrl(digitalAsset, siteNode.getRepository(), deliveryContext);
break;
}
}
}
}
}
if(assetUrl.equals("") && useLanguageFallback)
{
LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
if(!masterLanguageVO.getLanguageId().equals(languageId))
return getPrincipalAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, deliveryContext);
}
}
return assetUrl;
}
/**
* Getting a digitalAsset for a Principal - used for personalisation.
* This method starts with getting the asset on the user and if it does not exist we check out the
* group-properties as well.
*/
public String getPrincipalThumbnailAssetUrl(Database db, InfoGluePrincipal infoGluePrincipal, String assetKey, Integer languageId, Integer siteNodeId, boolean useLanguageFallback, int width, int height, DeliveryContext deliveryContext) throws Exception
{
String assetUrl = "";
if(infoGluePrincipal == null || assetKey == null)
return null;
Collection userPropertiesList = UserPropertiesController.getController().getUserPropertiesList(infoGluePrincipal.getName(), languageId, db, true);
Iterator userPropertiesListIterator = userPropertiesList.iterator();
while(userPropertiesListIterator.hasNext())
{
UserProperties userProperties = (UserProperties)userPropertiesListIterator.next();
if(userProperties != null && userProperties.getLanguage().getLanguageId().equals(languageId))
{
Collection assets = userProperties.getDigitalAssets();
Iterator assetsIterator = assets.iterator();
while(assetsIterator.hasNext())
{
DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
{
SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetThumbnailUrl(digitalAsset, siteNode.getRepository(), width, height, deliveryContext);
break;
}
}
}
}
if(assetUrl.equals(""))
{
List roles = infoGluePrincipal.getRoles();
Iterator rolesIterator = roles.iterator();
while(rolesIterator.hasNext())
{
InfoGlueRole role = (InfoGlueRole)rolesIterator.next();
Collection rolePropertiesList = RolePropertiesController.getController().getRolePropertiesList(role.getName(), languageId, db, true);
Iterator rolePropertiesListIterator = rolePropertiesList.iterator();
while(rolePropertiesListIterator.hasNext())
{
RoleProperties roleProperties = (RoleProperties)rolePropertiesListIterator.next();
if(roleProperties != null && roleProperties.getLanguage().getLanguageId().equals(languageId))
{
Collection assets = roleProperties.getDigitalAssets();
Iterator assetsIterator = assets.iterator();
while(assetsIterator.hasNext())
{
DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
{
SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetThumbnailUrl(digitalAsset, siteNode.getRepository(), width, height, deliveryContext);
break;
}
}
}
}
}
if(assetUrl.equals("") && useLanguageFallback)
{
LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
if(!masterLanguageVO.getLanguageId().equals(languageId))
return getPrincipalThumbnailAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, width, height, deliveryContext);
}
}
if(assetUrl.equals(""))
{
List groups = infoGluePrincipal.getGroups();
Iterator groupsIterator = groups.iterator();
while(groupsIterator.hasNext())
{
InfoGlueGroup group = (InfoGlueGroup)groupsIterator.next();
Collection groupPropertiesList = GroupPropertiesController.getController().getGroupPropertiesList(group.getName(), languageId, db, true);
Iterator groupPropertiesListIterator = groupPropertiesList.iterator();
while(groupPropertiesListIterator.hasNext())
{
GroupProperties groupProperties = (GroupProperties)groupPropertiesListIterator.next();
if(groupProperties != null && groupProperties.getLanguage().getLanguageId().equals(languageId))
{
Collection assets = groupProperties.getDigitalAssets();
Iterator assetsIterator = assets.iterator();
while(assetsIterator.hasNext())
{
DigitalAsset digitalAsset = (DigitalAsset)assetsIterator.next();
if(digitalAsset.getAssetKey().equalsIgnoreCase(assetKey))
{
SiteNode siteNode = SiteNodeController.getController().getSiteNodeWithId(siteNodeId, db);
assetUrl = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().getAssetThumbnailUrl(digitalAsset, siteNode.getRepository(), width, height, deliveryContext);
break;
}
}
}
}
}
if(assetUrl.equals("") && useLanguageFallback)
{
LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, siteNodeId);
if(!masterLanguageVO.getLanguageId().equals(languageId))
return getPrincipalThumbnailAssetUrl(db, infoGluePrincipal, assetKey, masterLanguageVO.getLanguageId(), siteNodeId, useLanguageFallback, width, height, deliveryContext);
}
}
return assetUrl;
}
/**
* Getting a property for a Principal - used for personalisation.
* This method starts with getting the property on the user and if it does not exist we check out the
* group-properties as well. The value in question is a map - name-value.
*/
/*
public Map getPrincipalPropertyHashValues(Database db, InfoGluePrincipal infoGluePrincipal, String propertyName, Integer languageId, Integer siteNodeId, boolean useLanguageFallback, boolean escapeSpecialCharacters) throws Exception
{
Properties properties = new Properties();
String attributeValue = getPrincipalPropertyValue(db, infoGluePrincipal, propertyName, languageId, siteNodeId, useLanguageFallback, escapeSpecialCharacters);
ByteArrayInputStream is = new ByteArrayInputStream(attributeValue.getBytes("UTF-8"));
properties.load(is);
return properties;
}
*/
}