-
Notifications
You must be signed in to change notification settings - Fork 116
/
Copy pathauthorizations.go
127 lines (109 loc) · 5.96 KB
/
authorizations.go
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
// Copyright 2020-2021 InfluxData, Inc. All rights reserved.
// Use of this source code is governed by MIT
// license that can be found in the LICENSE file.
package api
import (
"context"
"github.com/influxdata/influxdb-client-go/v2/domain"
)
// AuthorizationsAPI provides methods for organizing Authorization in a InfluxDB server
type AuthorizationsAPI interface {
// GetAuthorizations returns all authorizations
GetAuthorizations(ctx context.Context) (*[]domain.Authorization, error)
// FindAuthorizationsByUserName returns all authorizations for given userName
FindAuthorizationsByUserName(ctx context.Context, userName string) (*[]domain.Authorization, error)
// FindAuthorizationsByUserID returns all authorizations for given userID
FindAuthorizationsByUserID(ctx context.Context, userID string) (*[]domain.Authorization, error)
// FindAuthorizationsByOrgName returns all authorizations for given organization name
FindAuthorizationsByOrgName(ctx context.Context, orgName string) (*[]domain.Authorization, error)
// FindAuthorizationsByOrgID returns all authorizations for given organization id
FindAuthorizationsByOrgID(ctx context.Context, orgID string) (*[]domain.Authorization, error)
// CreateAuthorization creates new authorization
CreateAuthorization(ctx context.Context, authorization *domain.Authorization) (*domain.Authorization, error)
// CreateAuthorizationWithOrgID creates new authorization with given permissions scoped to given orgID
CreateAuthorizationWithOrgID(ctx context.Context, orgID string, permissions []domain.Permission) (*domain.Authorization, error)
// UpdateAuthorizationStatus updates status of authorization
UpdateAuthorizationStatus(ctx context.Context, authorization *domain.Authorization, status domain.AuthorizationUpdateRequestStatus) (*domain.Authorization, error)
// UpdateAuthorizationStatusWithID updates status of authorization with authID
UpdateAuthorizationStatusWithID(ctx context.Context, authID string, status domain.AuthorizationUpdateRequestStatus) (*domain.Authorization, error)
// DeleteAuthorization deletes authorization
DeleteAuthorization(ctx context.Context, authorization *domain.Authorization) error
// DeleteAuthorization deletes authorization with authID
DeleteAuthorizationWithID(ctx context.Context, authID string) error
}
// authorizationsAPI implements AuthorizationsAPI
type authorizationsAPI struct {
apiClient *domain.Client
}
// NewAuthorizationsAPI creates new instance of AuthorizationsAPI
func NewAuthorizationsAPI(apiClient *domain.Client) AuthorizationsAPI {
return &authorizationsAPI{
apiClient: apiClient,
}
}
func (a *authorizationsAPI) GetAuthorizations(ctx context.Context) (*[]domain.Authorization, error) {
authQuery := &domain.GetAuthorizationsParams{}
return a.listAuthorizations(ctx, authQuery)
}
func (a *authorizationsAPI) FindAuthorizationsByUserName(ctx context.Context, userName string) (*[]domain.Authorization, error) {
authQuery := &domain.GetAuthorizationsParams{User: &userName}
return a.listAuthorizations(ctx, authQuery)
}
func (a *authorizationsAPI) FindAuthorizationsByUserID(ctx context.Context, userID string) (*[]domain.Authorization, error) {
authQuery := &domain.GetAuthorizationsParams{UserID: &userID}
return a.listAuthorizations(ctx, authQuery)
}
func (a *authorizationsAPI) FindAuthorizationsByOrgName(ctx context.Context, orgName string) (*[]domain.Authorization, error) {
authQuery := &domain.GetAuthorizationsParams{Org: &orgName}
return a.listAuthorizations(ctx, authQuery)
}
func (a *authorizationsAPI) FindAuthorizationsByOrgID(ctx context.Context, orgID string) (*[]domain.Authorization, error) {
authQuery := &domain.GetAuthorizationsParams{OrgID: &orgID}
return a.listAuthorizations(ctx, authQuery)
}
func (a *authorizationsAPI) listAuthorizations(ctx context.Context, query *domain.GetAuthorizationsParams) (*[]domain.Authorization, error) {
response, err := a.apiClient.GetAuthorizations(ctx, query)
if err != nil {
return nil, err
}
return response.Authorizations, nil
}
func (a *authorizationsAPI) CreateAuthorization(ctx context.Context, authorization *domain.Authorization) (*domain.Authorization, error) {
params := &domain.PostAuthorizationsAllParams{
Body: domain.PostAuthorizationsJSONRequestBody{
AuthorizationUpdateRequest: authorization.AuthorizationUpdateRequest,
OrgID: authorization.OrgID,
Permissions: authorization.Permissions,
UserID: authorization.UserID,
},
}
return a.apiClient.PostAuthorizations(ctx, params)
}
func (a *authorizationsAPI) CreateAuthorizationWithOrgID(ctx context.Context, orgID string, permissions []domain.Permission) (*domain.Authorization, error) {
status := domain.AuthorizationUpdateRequestStatusActive
auth := &domain.Authorization{
AuthorizationUpdateRequest: domain.AuthorizationUpdateRequest{Status: &status},
OrgID: &orgID,
Permissions: &permissions,
}
return a.CreateAuthorization(ctx, auth)
}
func (a *authorizationsAPI) UpdateAuthorizationStatusWithID(ctx context.Context, authID string, status domain.AuthorizationUpdateRequestStatus) (*domain.Authorization, error) {
params := &domain.PatchAuthorizationsIDAllParams{
Body: domain.PatchAuthorizationsIDJSONRequestBody{Status: &status},
AuthID: authID,
}
return a.apiClient.PatchAuthorizationsID(ctx, params)
}
func (a *authorizationsAPI) UpdateAuthorizationStatus(ctx context.Context, authorization *domain.Authorization, status domain.AuthorizationUpdateRequestStatus) (*domain.Authorization, error) {
return a.UpdateAuthorizationStatusWithID(ctx, *authorization.Id, status)
}
func (a *authorizationsAPI) DeleteAuthorization(ctx context.Context, authorization *domain.Authorization) error {
return a.DeleteAuthorizationWithID(ctx, *authorization.Id)
}
func (a *authorizationsAPI) DeleteAuthorizationWithID(ctx context.Context, authID string) error {
params := &domain.DeleteAuthorizationsIDAllParams{
AuthID: authID,
}
return a.apiClient.DeleteAuthorizationsID(ctx, params)
}