用户ID通过Restful API获取角色

时间:2013-03-12 04:37:34

标签: sugarcrm

我正在尝试获取某个用户的角色(通​​过其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 - >用户...

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

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