static void ensureUserCustomFieldExists( com.liferay.portal.model.User liferayUser, PortletRequest request) throws PortalException, SystemException { ExpandoBridge exp = liferayUser.getExpandoBridge(); if (!exp.hasAttribute(CUSTOM_FIELD_PROJECT_GROUP_FILTER)) { exp.addAttribute(CUSTOM_FIELD_PROJECT_GROUP_FILTER, ExpandoColumnConstants.STRING, false); long companyId = liferayUser.getCompanyId(); ExpandoColumn column = ExpandoColumnLocalServiceUtil.getColumn( companyId, exp.getClassName(), ExpandoTableConstants.DEFAULT_TABLE_NAME, CUSTOM_FIELD_PROJECT_GROUP_FILTER); String[] roleNames = new String[] {RoleConstants.USER, RoleConstants.POWER_USER}; for (String roleName : roleNames) { Role role = RoleLocalServiceUtil.getRole(companyId, roleName); if (role != null && column != null) { ResourcePermissionLocalServiceUtil.setResourcePermissions( companyId, ExpandoColumn.class.getName(), ResourceConstants.SCOPE_INDIVIDUAL, String.valueOf(column.getColumnId()), role.getRoleId(), new String[] {ActionKeys.VIEW, ActionKeys.UPDATE}); } } } }
private static ExpandoBridge getUserExpandoBridge(PortletRequest request, User user) throws PortalException, SystemException { com.liferay.portal.model.User liferayUser = getLiferayUser(request, user); ensureUserCustomFieldExists(liferayUser, request); return liferayUser.getExpandoBridge(); }