Skip to content
Snippets Groups Projects
Select Git revision
  • 097c706ff1857fc825a36237d68c7f60119937ff
  • master default protected
  • feature/PRXS-3383-CollectionsSort
  • feature/2781-SpacesLoggingMiddleware
  • feature/PRXS-3421-ImplementNewRefAPI
  • feature/PRXS-3143-3235-ReferenceOptions
  • feature/PRXS-3143-LimitReferenceFields
  • feature/PRXS-3234-FeaturePruneIdents
  • PRXS-3421-RecursiveReferences
  • feature/3109-SerializeFeature
  • release/0.33
  • feature/3109-RecoverySchema
  • feature/3109-feature
  • fix/PRXS-3369-ValidateFields
  • refactor/PRXS-3306-MovePkgGroup1
  • refactor/6-pkg-refactor-expr
  • fix/PRXS-3360-TemplateBuilderPatch
  • feature/3293-MongoV2
  • feature/3272-GoVersionUp
  • feature/PRXS-3218-HideTemplateActions
  • feature/PRXS-3234-PruneIdents
  • v0.33.1
  • v0.32.0
  • v0.31.1
  • v0.31.0
  • v0.30.0
  • v0.29.0
  • v0.28.0
  • v0.27.0-alpha.1+16
  • v0.27.0-alpha.1+15
  • v0.27.0-alpha.1+14
  • v0.27.0-alpha.1+13
  • v0.27.0-alpha.1+12
  • v0.27.0-alpha.1+11
  • v0.27.0-alpha.1+10
  • v0.27.0-alpha.1+9
  • v0.27.0-alpha.1+8
  • v0.27.0-alpha.1+7
  • v0.27.0-alpha.1+6
  • v0.27.0-alpha.1+5
  • v0.27.0-alpha.1+4
41 results

client.go

Blame
  • client.go 3.05 KiB
    package clients
    
    // Client - приложение имеющее доступ к API
    type Client struct {
    	// Внутренний идентификатор клиента внутри системы
    	ID string `json:"id" bson:"_id"`
    
    	// Идентификатор пространства
    	SpaceID string `json:"space_id" bson:"-"`
    
    	// Имя приложения (обязательное поле)
    	Name string `json:"name" bson:"name"`
    
    	// Параметры аутентификации клиента
    	OAuth  *OAuth  `json:"oauth,omitempty" bson:"oauth,omitempty"`
    	TLS    *TLS    `json:"tls,omitempty" bson:"tls,omitempty"`
    	APIKey *APIKey `json:"api_key,omitempty" bson:"api_key,omitempty"`
    
    	// Описание клиента, назначение
    	Description string `json:"description" bson:"description"`
    
    	// Приложение отключено и не может авторизоваться
    	Disabled *bool `json:"disabled,omitempty" bson:"disabled,omitempty"`
    
    	// Роль приложения в пространстве
    	RoleID string `json:"role_id" bson:"role_id"`
    }
    
    type OAuth struct {
    	ClientID     string `bson:"client_id,omitempty" json:"client_id,omitempty"`         // Идентификатор клиента выданные IdP сервером, используется для идентификации клиента
    	AuthID       string `bson:"auth_id,omitempty" json:"auth_id,omitempty"`             // Сервис, который используется для авторизации клиента
    	TokenURL     string `bson:"token_url,omitempty" json:"token_url,omitempty"`         // URL для получения/обновления access token клиента (опционально)
    	ClientSecret string `bson:"client_secret,omitempty" json:"client_secret,omitempty"` // Секретный Ключ клиента, используется для идентификации клиента (опционально)
    }
    
    type APIKey struct {
    	Key    string `bson:"key,omitempty" json:"key,omitempty"`
    	Rotate bool   `bson:"-" json:"rotate,omitempty"`
    }
    
    type TLS struct {
    	Subject string `json:"subject,omitempty"`
    	CACert  string `json:"ca_cert,omitempty"`
    	Cert    string `json:"cert,omitempty"`
    	Key     string `json:"key,omitempty"`
    }
    
    // GetID возвращает идентификатор клиента
    func (c Client) GetID() string {
    	return c.ID
    }
    
    func (c Client) GetSpaceID() string {
    	return c.SpaceID
    }
    
    func (c *Client) SetDisabled(b bool) *Client {
    	c.Disabled = &b
    	return c
    }
    
    func (c *Client) IsDisabled() bool {
    	if c.Disabled != nil && *c.Disabled {
    		return true
    	}
    	return false
    }
    
    func (c Client) Clone() *Client {
    	clone := &Client{
    		ID:          c.ID,
    		SpaceID:     c.SpaceID,
    		Name:        c.Name,
    		Description: c.Description,
    		RoleID:      c.RoleID,
    	}
    
    	if c.OAuth != nil {
    		temp := *c.OAuth
    		clone.OAuth = &temp
    	}
    	if c.TLS != nil {
    		temp := *c.TLS
    		clone.TLS = &temp
    	}
    	if c.APIKey != nil {
    		temp := *c.APIKey
    		clone.APIKey = &temp
    	}
    	if c.Disabled != nil {
    		temp := *c.Disabled
    		clone.Disabled = &temp
    	}
    
    	return clone
    }