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 109323a..504e55b 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 @@ -277,6 +277,7 @@ public class OrganizationManagerImpl extends OrganizationsUtil implements Organi return true; } try { + long companyId = OrganizationsUtil.getCompany().getCompanyId(); _log.trace("Setting Thread Permission"); User user = UserLocalServiceUtil.getUserByScreenName(companyId, ScopeHelper.getAdministratorUsername()); @@ -284,11 +285,18 @@ public class OrganizationManagerImpl extends OrganizationsUtil implements Organi 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); + if (currOrg.getExpandoBridge().getAttribute(attrToCheck) == null || currOrg.getExpandoBridge().getAttribute(attrToCheck).equals("")) { + _log.trace("Attribute " + attrToCheck + " must be initialized"); + setOrgCustomAttribute(username, currOrg, attrToCheck); + isEnabled = true; + } + else { + String currVal = (String) currOrg.getExpandoBridge().getAttribute(attrToCheck); + isEnabled = (currVal.compareTo("true") == 0); + } + + _log.trace("Setting Thread Permission back to regular"); permissionChecker = PermissionCheckerFactoryUtil.create(currentUser, false); PermissionThreadLocal.setPermissionChecker(permissionChecker); _log.trace("Setting Permission ok! returning ..."); @@ -304,4 +312,43 @@ public class OrganizationManagerImpl extends OrganizationsUtil implements Organi return false; } } + + /** + * + * @param username + * @param attribute2Set + */ + private void setOrgCustomAttribute(String username, Organization currOrg, String attribute2Set) { + User currUser = null; + if (username.compareTo("test.user") == 0) { + _log.warn("Found Test User, returning ... "); + return; + } + 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!"); + + _log.debug("Creating and Setting custom attribute for colName " + attribute2Set + " to " +true); + //add the custom attrs + currUser = UserLocalServiceUtil.getUserByScreenName(companyId, username); + + if (! currOrg.getExpandoBridge().hasAttribute(attribute2Set)) + currOrg.getExpandoBridge().addAttribute(attribute2Set); + + currOrg.getExpandoBridge().setAttribute(attribute2Set, "true"); + _log.trace("setAttribute true"); + + + _log.trace("Setting Thread Permission back to regular"); + permissionChecker = PermissionCheckerFactoryUtil.create(currUser, false); + PermissionThreadLocal.setPermissionChecker(permissionChecker); + } + catch (Exception e) { + e.printStackTrace(); + } + } }