Skip to content

Commit 05dfc28

Browse files
authored
Merge pull request #789 from petr-tichy/userTokens
Add RevokeAccessUserTokens and RevokeZoneLevelAccessUserTokens
2 parents 2bd8514 + 88c1a40 commit 05dfc28

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed

access_user_tokens.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package cloudflare
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"net/http"
7+
)
8+
9+
type AccessUserEmail struct {
10+
Email string `json:"email"`
11+
}
12+
13+
// RevokeAccessUserTokens revokes any outstanding tokens issued for a specific user
14+
// Access User.
15+
//
16+
// API reference: https://api.cloudflare.com/#access-organizations-revoke-all-access-tokens-for-a-user
17+
func (api *API) RevokeAccessUserTokens(ctx context.Context, accountID string, accessUserEmail AccessUserEmail) error {
18+
return api.revokeUserTokens(ctx, accountID, accessUserEmail, AccountRouteRoot)
19+
}
20+
21+
// RevokeZoneLevelAccessUserTokens revokes any outstanding tokens issued for a specific user
22+
// Access User.
23+
//
24+
// API reference: https://api.cloudflare.com/#zone-level-access-organizations-revoke-all-access-tokens-for-a-user
25+
func (api *API) RevokeZoneLevelAccessUserTokens(ctx context.Context, zoneID string, accessUserEmail AccessUserEmail) error {
26+
return api.revokeUserTokens(ctx, zoneID, accessUserEmail, ZoneRouteRoot)
27+
}
28+
29+
func (api *API) revokeUserTokens(ctx context.Context, id string, accessUserEmail AccessUserEmail, routeRoot RouteRoot) error {
30+
uri := fmt.Sprintf("/%s/%s/access/organizations/revoke_user", routeRoot, id)
31+
32+
_, err := api.makeRequestContext(ctx, http.MethodPost, uri, accessUserEmail)
33+
if err != nil {
34+
return err
35+
}
36+
37+
return nil
38+
}

access_user_tokens_test.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package cloudflare
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"github.com/stretchr/testify/assert"
7+
"net/http"
8+
"testing"
9+
)
10+
11+
func TestRevokeUserTokens(t *testing.T) {
12+
setup()
13+
defer teardown()
14+
15+
handler := func(w http.ResponseWriter, r *http.Request) {
16+
assert.Equal(t, http.MethodPost, r.Method, "Expected method 'POST', got %s", r.Method)
17+
w.Header().Set("content-type", "application/json")
18+
fmt.Fprintf(w, `{
19+
"success": true,
20+
"result": true
21+
}
22+
`)
23+
}
24+
25+
mux.HandleFunc("/accounts/"+testAccountID+"/access/organizations/revoke_user", handler)
26+
27+
AccessUserEmail := AccessUserEmail{Email: "test@example.com"}
28+
29+
err := client.RevokeAccessUserTokens(context.Background(), testAccountID, AccessUserEmail)
30+
31+
assert.NoError(t, err)
32+
}
33+
34+
func TestZoneLevelRevokeUserTokens(t *testing.T) {
35+
setup()
36+
defer teardown()
37+
38+
handler := func(w http.ResponseWriter, r *http.Request) {
39+
assert.Equal(t, http.MethodPost, r.Method, "Expected method 'POST', got %s", r.Method)
40+
w.Header().Set("content-type", "application/json")
41+
fmt.Fprintf(w, `{
42+
"success": true,
43+
"result": true
44+
}
45+
`)
46+
}
47+
48+
mux.HandleFunc("/zones/"+testZoneID+"/access/organizations/revoke_user", handler)
49+
50+
AccessUserEmail := AccessUserEmail{Email: "test@example.com"}
51+
52+
err := client.RevokeZoneLevelAccessUserTokens(context.Background(), testZoneID, AccessUserEmail)
53+
54+
assert.NoError(t, err)
55+
}

0 commit comments

Comments
 (0)