0

我正在尝试获取某个用户的角色(通​​过其 id),目前我这样做:

$this 是 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 -> 用户...

有没有更好的方法来获得用户的角色?

4

2 回答 2

1

另一种选择是通过您自己的自定义端点添加新的 Web 服务调用。这实际上很简单,请参阅此知识库文章了解更多详细信息...

http://support.sugarcrm.com/02_Documentation/04_Sugar_Developer/Sugar_Developer_Guide_6.6/02_Application_Framework/Web_Services/06_Extending_Web_Services

于 2013-03-18T13:17:28.070 回答
0

我在 Sugar 6.5.8 中使用 get_relationships 通过 SOAP 服务检索给定用户的角色。

get_relationships(sessionId, "Users", userId, "aclroles", "", array("id", "name"))

注意:link_field_name (4th) 参数似乎是区分大小写的,但如果你像 module_name 参数一样弄错了它不会出错...它只是被忽略并且不返回任何记录。

于 2013-04-17T14:27:46.960 回答