如何检索使用SOAP服务的用户所属的所有组/角色?
我正在尝试使用SOAP服务收集一些用户信息 我能够获得给定用户的职务,但我不知道如何检索用户拥有的组和角色列表 我可以简单地使用如何检索使用SOAP服务的用户所属的所有组/角色?,soap,liferay,remote-access,Soap,Liferay,Remote Access,我正在尝试使用SOAP服务收集一些用户信息 我能够获得给定用户的职务,但我不知道如何检索用户拥有的组和角色列表 我可以简单地使用GroupServiceSoap.getUserPlaces(长用户名,字符串[]类名,int max)方法吗?还是有其他方法可以得到这些字段 当前我的代码: private static URL _getURL(String remoteUser, String password, String serviceName) { final String LIFE
GroupServiceSoap.getUserPlaces(长用户名,字符串[]类名,int max)
方法吗?还是有其他方法可以得到这些字段
当前我的代码:
private static URL _getURL(String remoteUser, String password, String serviceName) {
final String LIFERAY_PROTOCOL = "http://";
final String LIFERAY_TCP_PORT = "8080";
final String LIFERAY_FQDN = "localhost";
final String LIFERAY_AXIS_PATH = "/api/secure/axis/";
try {
return new URL(LIFERAY_PROTOCOL + URLEncoder.encode(remoteUser, "UTF-8") + ":"
+ URLEncoder.encode(password, "UTF-8") + "@" + LIFERAY_FQDN
+ ":" + LIFERAY_TCP_PORT + LIFERAY_AXIS_PATH + serviceName);
} catch (MalformedURLException e) {
return null;
} catch (UnsupportedEncodingException e) {
return null;
}
}
[...]
public static void main(String[] argv){
public final String LIFERAY_USER_SERVICE="Portal_UserService";
public final String LIFERAY_COMPANY_SERVICE="Portal_CompanyService";
public final String LIFERAY_GROUP_SERVICE = "Portal_GroupService";
//company.default.web.id property
public final String LIFERAY_DEFAULT_COMPANY_ID = "liferay.com";
UserServiceSoap userService = new UserServiceSoapServiceLocator().getPortal_UserService(_getURL(USER_IDENTIFIER,USER_PASSWORD, LIFERAY_USER_SERVICE));
//This code is usefull if you want to use SOAP setter.
//((Portal_UserServiceSoapBindingStub) userService).setUsername(USER_IDENTIFIER);
//((Portal_UserServiceSoapBindingStub) userService).setPassword(USER_PASSWORD);
CompanyServiceSoap companyService = new CompanyServiceSoapServiceLocator().getPortal_CompanyService(_getURL(USER_IDENTIFIER, USER_PASSWORD, LIFERAY_COMPANY_SERVICE));
long companyId = companyService.getCompanyByMx(LIFERAY_DEFAULT_COMPANY_ID).getCompanyId();
// Here I retrieve my user, and can access some properties, but not them all !
UserSoap user = userService.getUserByEmailAddress(companyId, target_user_mail);
//TODO : I got hte JobTittle that I want, later I will do something more util thant just print it, I swear it my precious !
System.out.println(user.getJobTitle());
GroupServiceSoap groupService = new GroupServiceSoapServiceLocator().getPortal_GroupService(_getURL(USER_IDENTIFIER, USER_PASSWORD, LIFERAY_GROUP_SERVICE));
//this one return an empty array
GroupSoap[] userPlaces = groupService.getUserPlaces(new String[]{"Group", "Role"}, 150);
//this return an array of size 1, but the only GroupSoap seems to be a structural groups without any usefull properties to me.
GroupSoap[] userPlaces = groupService.getUserPlaces(null, 150);
}
使用此方法获取用户角色和组用户id
UserServiceSoap.getRoleUserIds
UserServiceSoap.getGroupUserIds
这只是一个部分答案 要获得所有用户角色,可以执行以下操作:
RoleServiceSoap roleService = new RoleServiceSoapServiceLocator().getPortal_RoleService(_getURL(USER_IDENTIFIER, USER_PASSWORD, LIFERAY_ROLE_SERVICE));
RoleSoap[] userRoles = roleService.getUserRoles(user.getUserId());
带有用户变量的UserSoap实例
SOAP访问必须由管理员用户完成,才能访问角色列表。用户自己无法访问此功能。这些方法与我的需要相反!看到编写的API:public static long[]getgroupuserid(long groupId)抛出RemoteException返回属于该组的所有用户的主键。我想要完全相反的。我需要从用户Id中检索组Id。可以详细说明您需要什么吗?我有一个用户Id,我需要获取用户所在的组和角色的列表。