2013-11-22 5 views
7
ist

Es ist leicht zu bestimmen, ob ein Benutzer ein Mitglied eines Teams ist if you know the id:GitHub API v3: Bestimmen Sie, ob Benutzer ein Besitzer einer Organisation

GET /teams/:id/members/:user 

Aber wie kann man leicht die ID des speziellen "bestimmen Owners "Team, das jede Organisation hat?

Soweit ich das beurteilen kann, besteht die einzige Möglichkeit darin, eine vollständige Liste aller Teams (von denen ich annahm, dass es mehrere Seiten sind) zu finden und sie durchzugehen, bis Sie eine mit dem Namen "Owners" gefunden haben.

Das ist natürlich machbar, aber es ist untypisch unpraktisch für GitHubs ansonsten fantastische API. ;)

Für was es wert ist, ich habe folgendes versucht (ohne Glück):

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

Nur klar zu sein, habe ich sicher, dass ein Token dem Benutzer zugeordnet verwenden, besitzt die fragliche Organisation, daher sollte es keine Genehmigungsprobleme geben.

Antwort

5

Es gibt derzeit keine einfache Möglichkeit zu überprüfen, ob sich ein Benutzer im Eigentümerteam befindet. Danke für den coolen Feature-Vorschlag! ;)

Eine hacky Problemumgehung würde die Ausführung einer nicht-destruktiven Operation beinhalten, die nur Eigentümern erlaubt ist. Wenn der Vorgang erfolgreich ist, ist der authentifizierte Benutzer ein Eigentümer.

Zum Beispiel könnten Sie versuchen, die Einstellungen der Organisation der Bearbeitung durch einen leeren JSON Hash-Senden:

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

Wenn dieser einen 200 Statuscode zurückgibt, kann der Benutzer ein Eigentümer ist. Ein 404-Statuscode signalisiert andernfalls.

Hoffentlich können wir in Zukunft eine elegantere Lösung anbieten.

+0

Großartig! Dies ist eine viel bessere Alternative zu dem, was ich gerade mache. – namuol

+0

großartig, danke! –

+0

Sieht so aus, als ob die API [Mitgliedschaften] (https://developer.github.com/v3/orgs/members/#list-your-organization-memberships) das tut, was ich jetzt brauche. [Ich habe eine neue Antwort hinzugefügt/akzeptiert] (http://stackoverflow.com/a/28190753/742156). Cheers ~ – namuol

1

Als Alternative schnellere Lösung, können Sie die memberships API verwenden können Details über den authentifizierten Benutzer die Mitgliedschaft für jede Organisation sie gehören zu bekommen.

Die Anforderung einfach ist GET /user/memberships/orgs?state=active, und die Antwort wie folgt aussieht:

[ 
    { 
    "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 
    } 
    } 
] 

Der wichtige Bereich zu beachten ist, Rolle; wir wollen nur "role": "admin".

Ich bin nicht sicher, dass dies gewährleistet, dass der Benutzer ein Mitglied von Owners ist, aber es hat zeigen, dass sie Verwaltungsbefugnisse der Organisation haben.

Verwandte Themen