我正在尝试获取某个用户的角色(通过其ID),目前我这样做:
$这是SugarCRM之外的自制API访问,会话被隐式发送
$roles = $this->get_entry_list('ACLRoles', null, null, null, array('name'));
if ($roles) {
foreach ($roles->entry_list as $role) {
$result = $this->get_relationships('ACLRoles', $role->id, 'users', 'user_id=' . $userId);
if (count($result->entry_list) > 0) {
return array(
'id' => $role->id,
'name' => $role->name_value_list->name->value
);
}
}
}
但是,我认为这是一个效率低下的解决方案,因为我需要遍历所有角色以检查用户是否在那里......我一直在寻找API并尝试其他方法,但我无法获得关系用户 - > ACLRoles,只有ACLRoles - >用户...
有没有更好的方法来获得用户的角色?
答案 0 :(得分:1)
另一种选择是通过您自己的自定义端点添加新的Web服务调用。这实际上很简单,请参阅此知识库文章以获取更多详细信息......
答案 1 :(得分:0)
我在Sugar 6.5.8中使用get_relationships来通过SOAP服务检索给定用户的角色。
get_relationships(sessionId, "Users", userId, "aclroles", "", array("id", "name"))
注意:link_field_name(4th)参数似乎区分大小写,但如果你输入错误就不会出错,就像module_name参数一样......它只是被忽略而且没有返回任何记录。