-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathauthorization.go
More file actions
93 lines (83 loc) · 2.95 KB
/
authorization.go
File metadata and controls
93 lines (83 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package main
import (
"context"
"fmt"
"os"
authorization "github.com/stackitcloud/stackit-sdk-go/services/authorization/v2api"
)
func main() {
projectId := "PROJECT_ID" // the uuid of your STACKIT project
yourEmail := "your-email@example.com"
emailToBeAdded := "email@example.com"
// Create a new API client, that uses default authentication and configuration
client, err := authorization.NewAPIClient()
if err != nil {
fmt.Fprintf(os.Stderr, "Creating API client: %v\n", err)
os.Exit(1)
}
// Get the available permissions for the project resource type
getPermissionsResp, err := client.DefaultAPI.ListPermissions(context.Background()).ResourceType("project").Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `GetPermissions`: %v\n", err)
} else {
availablePermissions := getPermissionsResp.Permissions
if len(availablePermissions) > 0 {
fmt.Printf("Example of available permission: %v\n", availablePermissions[0].Name)
}
}
// Get the memberships of your user
getMembershipsResp, err := client.DefaultAPI.ListUserMemberships(context.Background(), yourEmail).Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `ListUserMemberships`: %v\n", err)
} else {
userMemberships := getMembershipsResp.Items
fmt.Printf("Number of memberships: %v\n", len(userMemberships))
if len(userMemberships) > 0 {
fmt.Printf("Example of a membership of user %s: \nResource type - %s\nResource id - %s\nRole - %s\n",
userMemberships[0].Subject,
userMemberships[0].ResourceType,
userMemberships[0].ResourceId,
userMemberships[0].Role,
)
}
}
// Get the members of your project
getMembersResp, err := client.DefaultAPI.ListMembers(context.Background(), "project", projectId).Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `GetMembers`: %v\n", err)
} else {
fmt.Printf("Number of members: %v\n", len(getMembersResp.Members))
}
// Add a member to your project or add an additional role to an existing member
updateMemberPayload := authorization.AddMembersPayload{
Members: []authorization.Member{
{
Role: "project.member",
Subject: emailToBeAdded,
},
},
ResourceType: "project",
}
_, err = client.DefaultAPI.AddMembers(context.Background(), projectId).AddMembersPayload(updateMemberPayload).Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `UpdateMembers`: %v\n", err)
} else {
fmt.Printf("Added member successfully.\n")
}
// Remove a role from a member of your project
deleteMemberPayload := authorization.RemoveMembersPayload{
Members: []authorization.Member{
{
Role: "project.member",
Subject: emailToBeAdded,
},
},
ResourceType: "project",
}
_, err = client.DefaultAPI.RemoveMembers(context.Background(), projectId).RemoveMembersPayload(deleteMemberPayload).Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `DeleteMembers`: %v\n", err)
} else {
fmt.Printf("Removed member successfully.\n")
}
}