2011-06-07 31 views
5

Soy nuevo en el desarrollo de Liferay en general, así que siéntase libre de señalar si estoy haciendo algo totalmente mal.Obteniendo todos los usuarios con un Rol en Liferay

Estoy tratando de obtener un objeto DynamicQuery de todos los usuarios dentro de un grupo determinado (usaré este objeto para filtrar aún más otra consulta que haré en el tablero de mensajes). La interfaz User parece tener una propiedad roleIds que podría usar, ya que conozco el roleId que me interesa. Pero no puedo encontrar la forma correcta de consultar si roleIdscontiene un cierto valor.

¿Alguna idea sobre lo que quiero hacer?

PD: Tendría la consulta SQL exacta que podría hacer directamente, pero preferiría usar el grupo de conexiones de Liferay, sin la necesidad de hacer algún proyecto extraño.

Respuesta

7

La forma más fácil de acceder a objetos propios de salvavidas es mediante el uso de las clases XXXServiceUtil (por ejemplo, RoleServiceUtil.getUserRoles(userId)). Por lo tanto, rara vez tiene que tratar con cualquier SQL directamente. O el RoleServiceUtil o el UserServiceUtil pueden tener lo que necesita.

8

No necesita una DynamicQuery. Estos son los métodos que está buscando en las clases que Dirk señala:

long[] UserServiceUtil.getRoleUserIds(long roleId) 

o

long[] UserLocalServiceUtil.getRoleUserIds(long roleId) 
List<User> UserLocalServiceUtil.getRoleUsers(long roleId) 

Recuerde que los métodos de las clases XXXLocalServiceUtil no están comprobando los permisos del usuario actual.

EDIT: Si está buscando todos los usuarios con un rol determinado en una determinada comunidad:

long companyId= _X_; //Perhaps CompanyThreadLocal.getCompanyId() if you don't have it anywhere else? 
Role role=RoleLocalServiceUtil.getRole(companyId, "Example Role"); 
Group group=GroupLocalServiceUtil.getGroup(companyId, "Example Community"); 
List<UserGroupRole> userGroupRoles = UserGroupRoleLocalServiceUtil. 
         getUserGroupRolesByGroupAndRole(groupId, role.getRoleId()); 
for(UserGroupRole userGroupRole:userGroupRoles){ 
    User oneUser=userGroupRole.getUser(); 
} 
+0

Quiero obtener los usuarios que han asignado roles de organización específicos, obtuve el ID de función de la función pero no pude obtener los usuarios asociados con esa identificación de función. También recibí que las entradas están dentro de USerGroupTable. ¿Puedes ayudarme por favor? – Prem

+0

Puedes utilizar 'UserLocalServiceUtil.getRoleUsers (roleId)' –

0

Las funciones de un Las organizaciones se almacenan en la tabla UserGroupRole, así que si usted desea conseguir el propietario del una organización debe utilizar el siguiente código:

boolean isOrgOwner = 
    UserGroupRoleLocalServiceUtil.hasUserGroupRole(
     usr.getUserId(), 
     this.currentOrganization.getGroupId(), 
     RoleConstants.ORGANIZATION_OWNER); 

Si desea recuperar todos los propietarios de una organización organización:

List<User> administrators = new LinkedList<>(); 

List<UserGroupRole> allOrganizationAdministrators = 
    UserGroupRoleLocalServiceUtil.getUserGroupRolesByGroupAndRole(
     this.currentOrganization.getGroupId(), roleId); 

for (UserGroupRole userGroupRoleTemp : allOrganizationAdministrators) { 
    administrators.add(userGroupRoleTemp.getUser()); 
} 

¡Salud!

Cuestiones relacionadas