123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- // 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)
- }
|