diff --git a/distro/changelog.xml b/distro/changelog.xml index fbb8259..0627e1f 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,7 +1,20 @@ - - Fixed invalidate session bug + + Added method for checking Organization custom attributes + + + Added getBaseLayout method for Organizations + + + Added getAdministratorUsername method in ScopeHelper + + + Added possibility to create programmatically layouts with + framed portlets @@ -9,17 +22,8 @@ Removed GCF Dependency Logging with sl4j Enabled - - Added possibility to create programmatically layouts with - framed portlets - - - Added getAdministratorUsername method in ScopeHelper - - - Added getBaseLayout method for Organizations - + + Fixed invalidate session bug + \ No newline at end of file diff --git a/pom.xml b/pom.xml index ed0067c..21ff149 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.gcube.portal custom-portal-handler - 1.6.0-SNAPSHOT + 1.7.0-SNAPSHOT jar Custom Portal Handler diff --git a/src/main/java/org/gcube/portal/custom/communitymanager/OrganizationManager.java b/src/main/java/org/gcube/portal/custom/communitymanager/OrganizationManager.java index eb50a54..a17ba9a 100644 --- a/src/main/java/org/gcube/portal/custom/communitymanager/OrganizationManager.java +++ b/src/main/java/org/gcube/portal/custom/communitymanager/OrganizationManager.java @@ -2,11 +2,12 @@ package org.gcube.portal.custom.communitymanager; import org.gcube.portal.custom.communitymanager.components.GCUBESiteLayout; +import com.liferay.portal.model.Organization; + /** * * @author Massimiliano Assante, massimiliano.assante@isti.cnr.it - * @version 1.0 - Jan 4 2012 * */ public interface OrganizationManager { @@ -33,5 +34,13 @@ public interface OrganizationManager { * @return the organizationid of the created VO */ long createVRE(String voName, String voDesc, long parentid, GCUBESiteLayout siteLayout, String themeid); + /** + * + * @param username the screenname of the current user + * @param currOrg the organization in which to check the custom attribute + * @param attrToCheck the key to check + * @return true or false + */ + Boolean readOrganizationCustomAttribute(String username, Organization currOrg, String attrToCheck); } diff --git a/src/main/java/org/gcube/portal/custom/communitymanager/impl/OrganizationManagerImpl.java b/src/main/java/org/gcube/portal/custom/communitymanager/impl/OrganizationManagerImpl.java index dc76fbc..e00ac94 100644 --- a/src/main/java/org/gcube/portal/custom/communitymanager/impl/OrganizationManagerImpl.java +++ b/src/main/java/org/gcube/portal/custom/communitymanager/impl/OrganizationManagerImpl.java @@ -15,6 +15,7 @@ import org.gcube.portal.custom.communitymanager.components.GCUBELayoutTab; import org.gcube.portal.custom.communitymanager.components.GCUBEPortlet; import org.gcube.portal.custom.communitymanager.components.GCUBESiteLayout; import org.gcube.portal.custom.communitymanager.types.GCUBELayoutType; +import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; import org.gcube.vomanagement.usermanagement.GroupManager; import org.gcube.vomanagement.usermanagement.RoleManager; import org.gcube.vomanagement.usermanagement.UserManager; @@ -23,21 +24,26 @@ import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayRoleManager; import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayUserManager; import org.gcube.vomanagement.usermanagement.model.GroupModel; +import com.liferay.portal.kernel.bean.BeanLocatorException; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.model.Group; +import com.liferay.portal.model.Organization; import com.liferay.portal.model.Role; import com.liferay.portal.model.Theme; import com.liferay.portal.model.User; +import com.liferay.portal.security.permission.PermissionChecker; +import com.liferay.portal.security.permission.PermissionCheckerFactoryUtil; +import com.liferay.portal.security.permission.PermissionThreadLocal; import com.liferay.portal.service.LayoutSetLocalServiceUtil; import com.liferay.portal.service.OrganizationLocalServiceUtil; import com.liferay.portal.service.ThemeLocalServiceUtil; +import com.liferay.portal.service.UserLocalServiceUtil; /** * * @author Massimiliano Assante, massimiliano.assante@isti.cnr.it - * @version 1.0 - Jan 4 2012 * */ public class OrganizationManagerImpl extends OrganizationsUtil implements OrganizationManager { @@ -266,4 +272,41 @@ public class OrganizationManagerImpl extends OrganizationsUtil implements Organi return null; } } + /** + * {@inheritDoc} + */ + public Boolean readOrganizationCustomAttribute(String username, Organization currOrg, String attrToCheck) { + Boolean isEnabled = false; + if (username.compareTo("test.user") == 0) { + _log.warn("Found test.user maybe you are in dev mode, returning ... "); + return true; + } + try { + long companyId = OrganizationsUtil.getCompany().getCompanyId(); + _log.trace("Setting Thread Permission"); + User user = UserLocalServiceUtil.getUserByScreenName(companyId, ScopeHelper.getAdministratorUsername()); + PermissionChecker permissionChecker = PermissionCheckerFactoryUtil.create(user, false); + PermissionThreadLocal.setPermissionChecker(permissionChecker); + _log.trace("Setting Permission ok!"); + + String currVal = (String) currOrg.getExpandoBridge().getAttribute(attrToCheck); + isEnabled = (currVal.compareTo("true") == 0); + + _log.trace("Setting Thread Permission back to regular"); + User currentUser = OrganizationsUtil.validateUser(username); + permissionChecker = PermissionCheckerFactoryUtil.create(currentUser, false); + PermissionThreadLocal.setPermissionChecker(permissionChecker); + _log.trace("Setting Permission ok! returning ..."); + System.out.println(" returning *********** isEnabled=" + isEnabled); + return isEnabled; + } catch (BeanLocatorException ex) { + ex.printStackTrace(); + _log.warn("Could not read the property " + attrToCheck + " from LR DB, maybe you are in dev mode, returning true"); + return true; + } + catch (Exception e) { + e.printStackTrace(); + return false; + } + } }