protected UserGroup importUserGroup( long companyId, Attributes attributes, Properties groupMappings) throws Exception { AttributesTransformer attributesTransformer = AttributesTransformerFactory.getInstance(); attributes = attributesTransformer.transformGroup(attributes); LDAPGroup ldapGroup = _ldapToPortalConverter.importLDAPGroup(companyId, attributes, groupMappings); UserGroup userGroup = null; try { userGroup = UserGroupLocalServiceUtil.getUserGroup(companyId, ldapGroup.getGroupName()); UserGroupLocalServiceUtil.updateUserGroup( companyId, userGroup.getUserGroupId(), ldapGroup.getGroupName(), ldapGroup.getDescription()); } catch (NoSuchUserGroupException nsuge) { if (_log.isDebugEnabled()) { _log.debug("Adding user group to portal " + ldapGroup.getGroupName()); } long defaultUserId = UserLocalServiceUtil.getDefaultUserId(companyId); LDAPUserGroupTransactionThreadLocal.setOriginatesFromLDAP(true); try { userGroup = UserGroupLocalServiceUtil.addUserGroup( defaultUserId, companyId, ldapGroup.getGroupName(), ldapGroup.getDescription()); } catch (Exception e) { if (_log.isWarnEnabled()) { _log.warn("Unable to create user group " + ldapGroup.getGroupName()); } if (_log.isDebugEnabled()) { _log.debug(e, e); } } finally { LDAPUserGroupTransactionThreadLocal.setOriginatesFromLDAP(false); } } addRole(companyId, ldapGroup, userGroup); return userGroup; }
protected void addRole(long companyId, LDAPGroup ldapGroup, UserGroup userGroup) throws Exception { if (!PropsValues.LDAP_IMPORT_CREATE_ROLE_PER_GROUP) { return; } Role role = null; try { role = RoleLocalServiceUtil.getRole(companyId, ldapGroup.getGroupName()); } catch (NoSuchRoleException nsre) { User defaultUser = UserLocalServiceUtil.getDefaultUser(companyId); Map<Locale, String> descriptionMap = new HashMap<Locale, String>(); descriptionMap.put(LocaleUtil.getDefault(), "Autogenerated role from LDAP import"); role = RoleLocalServiceUtil.addRole( defaultUser.getUserId(), companyId, ldapGroup.getGroupName(), null, descriptionMap, RoleConstants.TYPE_REGULAR); } Group group = userGroup.getGroup(); if (GroupLocalServiceUtil.hasRoleGroup(role.getRoleId(), group.getGroupId())) { return; } GroupLocalServiceUtil.addRoleGroups(role.getRoleId(), new long[] {group.getGroupId()}); }