如何通过Liferay API获取组织和站点角色列表

时间:2019-01-28 14:21:51

标签: liferay liferay-7

我需要获取Liferay中存在的组织角色和站点角色的列表。

我已使用下面的以下代码获取网站角色和组织角色

List<UserGroupRole> list =UserGroupRoleLocalServiceUtil.getUserGroupRoles(0,UserGroupRoleLocalServiceUtil.getUserGroupRolesCount());
                                  System.out.println("UserGroupRole list size  "+list.size());
                                  System.out.println("getUserGroupRolesCount  "+UserGroupRoleLocalServiceUtil.getUserGroupRolesCount());                        

                                  for (UserGroupRole roleObj : list) {

                                         if(roleObj != null && roleObj.getRole() != null ){
                                                if (RoleConstants.TYPE_ORGANIZATION==roleObj.getRole().getType() && RoleConstants.ORGANIZATION_ADMINISTRATOR.equals(roleObj.getRole().getName())) {
                                                       System.out.println("Role Name " + roleObj.getRole().getName() + " Role Id "+ roleObj.getRole().getRoleId() + " Role type " + roleObj.getRole().getType());

                                                       session.setAttribute(LoginConstants.ORGANIZATION_ADMINISTRATOR_ROLE_ID, roleObj.getRole().getRoleId(),PortletSession.APPLICATION_SCOPE);

                                                       } else 
                                                if (RoleConstants.TYPE_ORGANIZATION==roleObj.getRole().getType() && RoleConstants.ORGANIZATION_OWNER.equals(roleObj.getRole().getName())) {
                                                       System.out.println("Role Name " + roleObj.getRole().getName() + " Role Id "+ roleObj.getRole().getRoleId() + " Role type " + roleObj.getRole().getType());

                                                       session.setAttribute(LoginConstants.ORGANIZATION_OWNER_ROLE_ID, roleObj.getRole().getRoleId(),PortletSession.APPLICATION_SCOPE);

                                                       } else
                                                if (RoleConstants.TYPE_SITE==roleObj.getRole().getType() && RoleConstants.SITE_ADMINISTRATOR.equals(roleObj.getRole().getName())) {
                                                       System.out.println("Role Name " + roleObj.getRole().getName() + " Role Id "+ roleObj.getRole().getRoleId() + " Role type " + roleObj.getRole().getType());

                                                       session.setAttribute(LoginConstants.SITE_ADMINISTRATOR_ROLE_ID, roleObj.getRole().getRoleId(),PortletSession.APPLICATION_SCOPE);

                                                       } else 
                                                if (RoleConstants.TYPE_SITE==roleObj.getRole().getType() && RoleConstants.SITE_OWNER.equals(roleObj.getRole().getName())) {
                                                       System.out.println("Role Name " + roleObj.getRole().getName() + " Role Id "+ roleObj.getRole().getRoleId() + " Role type " + roleObj.getRole().getType());

                                                       session.setAttribute(LoginConstants.SITE_OWNER_ROLE_ID, roleObj.getRole().getRoleId(),PortletSession.APPLICATION_SCOPE);

                                                }
                                         }
                                  }

我期待以下4个角色的详细信息(角色ID) -组织管理员 -组织负责人 -网站管理员 -网站所有者

但是我没有“站点管理员”角色的详细信息,原因是我没有将此角色分配给任何用户,因此没有“ UserGroupRole” 同样存在映射。 UserGroupRole列表大小为2776。

当我为用户分配“站点管理员”角色时,我可以从上面的代码中获得它,并且UserGroupRole列表的大小为2777。

还有其他方法可以获取所有组织角色和站点角色的列表。 请帮我,谢谢你。

1 个答案:

答案 0 :(得分:0)

感谢@Daniele Baggio

我能够获得以下4个角色

  • 组织管理员
  • 组织所有者
  • 网站管理员
  • 网站所有者

角色orgAdmin = RoleLocalServiceUtil.getRole(companyId,RoleConstants.ORGANIZATION_ADMINISTRATOR);

角色orgOwner = RoleLocalServiceUtil.getRole(companyId,RoleConstants.ORGANIZATION_OWNER); 角色siteAdmin = RoleLocalServiceUtil.getRole(companyId,RoleConstants.SITE_ADMINISTRATOR); 角色siteOwner = RoleLocalServiceUtil.getRole(companyId,RoleConstants.SITE_OWNER);