【问题标题】:GitHub API v3: Determine if user is an Owner of an OrganizationGitHub API v3:确定用户是否是组织的所有者
【发布时间】:2013-11-22 11:52:51
【问题描述】:

很容易确定用户是否是if you know the id 团队的成员:

GET /teams/:id/members/:user

但是如何轻松确定每个组织拥有的特殊“所有者”团队的 ID?

据我所知,唯一的方法是检索所有团队的完整列​​表(我假设可能是多页?)并遍历它们,直到找到一个名为“所有者”的团队。

这当然是可行的,但对于 GitHub 原本很棒的 AP​​I 来说,它一反常态地不方便。 ;)

为了它的价值,我尝试了以下方法(没有运气):

GET /orgs/:organization/teams?name=Owners # Lists all teams
GET /orgs/:organization/owners            # 404

为了清楚起见,我已确保使用与拥有相关组织的用户关联的令牌,因此不应该存在任何授权问题。

【问题讨论】:

    标签: github-api


    【解决方案1】:

    目前没有简单的方法来检查用户是否在所有者团队中。不过,感谢您提供很酷的功能建议! ;)

    一个 hacky 解决方法将涉及执行只有所有者才能执行的非破坏性操作。如果操作成功 - 经过身份验证的用户是所有者。

    例如,您可以尝试通过发送空 JSON 哈希来编辑组织的设置:

    $ curl -v -X PATCH -d '{}' https://api.github.com/orgs/:org?access_token=TOKEN
    

    如果返回 200 状态代码,则用户是所有者。否则,404 状态代码会发出信号。

    希望我们将来可以提供更优雅的解决方案。

    【讨论】:

    【解决方案2】:

    作为一种更快捷的替代解决方案,您可以使用memberships API 获取有关经过身份验证的用户在他们所属的每个组织中的成员身份的详细信息。

    请求只是GET /user/memberships/orgs?state=active,响应如下所示:

    [
      {
        "state": "active",
        "role": "admin",
        "organization": {
          "login": "octocat",
          "id": 1,
        },
        "user": {
          "login": "defunkt",
          "id": 3,
          "gravatar_id": "",
          "type": "User",
          "site_admin": false
        }
      },
      {
        "state": "active",
        "role": "member",
        "organization": {
          "login": "invitocat",
          "id": 2,
        },
        "user": {
          "login": "defunkt",
          "id": 3,
          "gravatar_id": "",
          "type": "User",
          "site_admin": false
        }
      }
    ]
    

    需要注意的重要领域是角色;我们只想要"role": "admin"

    我不确定这是否能保证用户是 Owners 的成员,但它确实表明他们拥有该组织的管理权限。

    【讨论】:

    • 这很整洁(并且意识到它已经有 7 年的历史了)。但是你能帮我重现这种行为吗?我正在努力让身份验证为给定的用户(即我)工作。也许你可以提供一个 shell 命令来获得正确的输出?
    【解决方案3】:

    只需确定他们是否属于该组织https://developer.github.com/v3/orgs/teams/#list-team-members名为“所有者”的团队的一员

    所有者是 GitHub 的一个特殊团队,只有所有者。

    https://github.com/orgs/YOURORG/teams/owners

    【讨论】:

    • 不幸的是,必须先找到 Owners 团队的 ID,然后才能查询他们是否是成员,这涉及逐步浏览可能分页的团队列表...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2020-03-11
    • 2015-07-17
    • 2023-04-07
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多