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;
+ }
+ }
}