authorizations.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. // Copyright 2020-2021 InfluxData, Inc. All rights reserved.
  2. // Use of this source code is governed by MIT
  3. // license that can be found in the LICENSE file.
  4. package api
  5. import (
  6. "context"
  7. "github.com/influxdata/influxdb-client-go/v2/domain"
  8. )
  9. // AuthorizationsAPI provides methods for organizing Authorization in a InfluxDB server
  10. type AuthorizationsAPI interface {
  11. // GetAuthorizations returns all authorizations
  12. GetAuthorizations(ctx context.Context) (*[]domain.Authorization, error)
  13. // FindAuthorizationsByUserName returns all authorizations for given userName
  14. FindAuthorizationsByUserName(ctx context.Context, userName string) (*[]domain.Authorization, error)
  15. // FindAuthorizationsByUserID returns all authorizations for given userID
  16. FindAuthorizationsByUserID(ctx context.Context, userID string) (*[]domain.Authorization, error)
  17. // FindAuthorizationsByOrgName returns all authorizations for given organization name
  18. FindAuthorizationsByOrgName(ctx context.Context, orgName string) (*[]domain.Authorization, error)
  19. // FindAuthorizationsByOrgID returns all authorizations for given organization id
  20. FindAuthorizationsByOrgID(ctx context.Context, orgID string) (*[]domain.Authorization, error)
  21. // CreateAuthorization creates new authorization
  22. CreateAuthorization(ctx context.Context, authorization *domain.Authorization) (*domain.Authorization, error)
  23. // CreateAuthorizationWithOrgID creates new authorization with given permissions scoped to given orgID
  24. CreateAuthorizationWithOrgID(ctx context.Context, orgID string, permissions []domain.Permission) (*domain.Authorization, error)
  25. // UpdateAuthorizationStatus updates status of authorization
  26. UpdateAuthorizationStatus(ctx context.Context, authorization *domain.Authorization, status domain.AuthorizationUpdateRequestStatus) (*domain.Authorization, error)
  27. // UpdateAuthorizationStatusWithID updates status of authorization with authID
  28. UpdateAuthorizationStatusWithID(ctx context.Context, authID string, status domain.AuthorizationUpdateRequestStatus) (*domain.Authorization, error)
  29. // DeleteAuthorization deletes authorization
  30. DeleteAuthorization(ctx context.Context, authorization *domain.Authorization) error
  31. // DeleteAuthorization deletes authorization with authID
  32. DeleteAuthorizationWithID(ctx context.Context, authID string) error
  33. }
  34. // authorizationsAPI implements AuthorizationsAPI
  35. type authorizationsAPI struct {
  36. apiClient *domain.Client
  37. }
  38. // NewAuthorizationsAPI creates new instance of AuthorizationsAPI
  39. func NewAuthorizationsAPI(apiClient *domain.Client) AuthorizationsAPI {
  40. return &authorizationsAPI{
  41. apiClient: apiClient,
  42. }
  43. }
  44. func (a *authorizationsAPI) GetAuthorizations(ctx context.Context) (*[]domain.Authorization, error) {
  45. authQuery := &domain.GetAuthorizationsParams{}
  46. return a.listAuthorizations(ctx, authQuery)
  47. }
  48. func (a *authorizationsAPI) FindAuthorizationsByUserName(ctx context.Context, userName string) (*[]domain.Authorization, error) {
  49. authQuery := &domain.GetAuthorizationsParams{User: &userName}
  50. return a.listAuthorizations(ctx, authQuery)
  51. }
  52. func (a *authorizationsAPI) FindAuthorizationsByUserID(ctx context.Context, userID string) (*[]domain.Authorization, error) {
  53. authQuery := &domain.GetAuthorizationsParams{UserID: &userID}
  54. return a.listAuthorizations(ctx, authQuery)
  55. }
  56. func (a *authorizationsAPI) FindAuthorizationsByOrgName(ctx context.Context, orgName string) (*[]domain.Authorization, error) {
  57. authQuery := &domain.GetAuthorizationsParams{Org: &orgName}
  58. return a.listAuthorizations(ctx, authQuery)
  59. }
  60. func (a *authorizationsAPI) FindAuthorizationsByOrgID(ctx context.Context, orgID string) (*[]domain.Authorization, error) {
  61. authQuery := &domain.GetAuthorizationsParams{OrgID: &orgID}
  62. return a.listAuthorizations(ctx, authQuery)
  63. }
  64. func (a *authorizationsAPI) listAuthorizations(ctx context.Context, query *domain.GetAuthorizationsParams) (*[]domain.Authorization, error) {
  65. response, err := a.apiClient.GetAuthorizations(ctx, query)
  66. if err != nil {
  67. return nil, err
  68. }
  69. return response.Authorizations, nil
  70. }
  71. func (a *authorizationsAPI) CreateAuthorization(ctx context.Context, authorization *domain.Authorization) (*domain.Authorization, error) {
  72. params := &domain.PostAuthorizationsAllParams{
  73. Body: domain.PostAuthorizationsJSONRequestBody{
  74. AuthorizationUpdateRequest: authorization.AuthorizationUpdateRequest,
  75. OrgID: authorization.OrgID,
  76. Permissions: authorization.Permissions,
  77. UserID: authorization.UserID,
  78. },
  79. }
  80. return a.apiClient.PostAuthorizations(ctx, params)
  81. }
  82. func (a *authorizationsAPI) CreateAuthorizationWithOrgID(ctx context.Context, orgID string, permissions []domain.Permission) (*domain.Authorization, error) {
  83. status := domain.AuthorizationUpdateRequestStatusActive
  84. auth := &domain.Authorization{
  85. AuthorizationUpdateRequest: domain.AuthorizationUpdateRequest{Status: &status},
  86. OrgID: &orgID,
  87. Permissions: &permissions,
  88. }
  89. return a.CreateAuthorization(ctx, auth)
  90. }
  91. func (a *authorizationsAPI) UpdateAuthorizationStatusWithID(ctx context.Context, authID string, status domain.AuthorizationUpdateRequestStatus) (*domain.Authorization, error) {
  92. params := &domain.PatchAuthorizationsIDAllParams{
  93. Body: domain.PatchAuthorizationsIDJSONRequestBody{Status: &status},
  94. AuthID: authID,
  95. }
  96. return a.apiClient.PatchAuthorizationsID(ctx, params)
  97. }
  98. func (a *authorizationsAPI) UpdateAuthorizationStatus(ctx context.Context, authorization *domain.Authorization, status domain.AuthorizationUpdateRequestStatus) (*domain.Authorization, error) {
  99. return a.UpdateAuthorizationStatusWithID(ctx, *authorization.Id, status)
  100. }
  101. func (a *authorizationsAPI) DeleteAuthorization(ctx context.Context, authorization *domain.Authorization) error {
  102. return a.DeleteAuthorizationWithID(ctx, *authorization.Id)
  103. }
  104. func (a *authorizationsAPI) DeleteAuthorizationWithID(ctx context.Context, authID string) error {
  105. params := &domain.DeleteAuthorizationsIDAllParams{
  106. AuthID: authID,
  107. }
  108. return a.apiClient.DeleteAuthorizationsID(ctx, params)
  109. }