/* * Copyright Leidse Onderwijsinstellingen. All Rights Reserved. */ package org.sakaiproject.portal.service; import org.sakaiproject.authz.api.FunctionManager; import org.sakaiproject.authz.api.SecurityService; import org.sakaiproject.component.api.ServerConfigurationService; import org.sakaiproject.portal.api.PortalChatPermittedHelper; import org.sakaiproject.site.api.SiteService; /** * Implementation of the portal chat permitted helper. * * @author Tania Tritean, ISDC! * @author Adrian Fish, Lancaster University */ public class PortalChatPermittedHelperImpl implements PortalChatPermittedHelper { private static final String PORTAL_CHAT_PERMITTED = "portal.chat.permitted"; private SecurityService securityService; public void setSecurityService(SecurityService securityService) { this.securityService = securityService; } private SiteService siteService; public void setSiteService(SiteService siteService) { this.siteService = siteService; } private FunctionManager functionManager; public void setFunctionManager(FunctionManager functionManager) { this.functionManager = functionManager; } private ServerConfigurationService serverConfigurationService; public void setServerConfigurationService(ServerConfigurationService serverConfigurationService) { this.serverConfigurationService = serverConfigurationService; } private boolean securedByUser = false; public void init() { this.functionManager.registerFunction(PORTAL_CHAT_PERMITTED); securedByUser = serverConfigurationService.getBoolean("portal.chat.securedByUser", false); } /** * Checks if the user has permissions to use the chat. The permission is * set in the user's MyWorkspace site. * * @param userId The user we want to check * @return true if the user has portal.chat.permitted set in their user site, false otherwise. */ public boolean checkChatPermitted(String userId) { if(securedByUser) { if (userId != null && !userId.equals("")) { String userSiteId = siteService.getUserSiteId(userId); return securityService.unlock(userId, PORTAL_CHAT_PERMITTED, "/site/" + userSiteId); } else { return false; } } else { // We're not securing by user. Portal chat is available to everybody. return true; } } }