github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/boom/application/applications/reconciling/config/auth/gitlab.go (about)

     1  package auth
     2  
     3  import (
     4  	"github.com/caos/orbos/internal/operator/boom/api/latest/reconciling/auth/gitlab"
     5  	"github.com/caos/orbos/pkg/secret/read"
     6  )
     7  
     8  type gitlabConnector struct {
     9  	ClientID     string   `yaml:"clientID,omitempty"`
    10  	ClientSecret string   `yaml:"clientSecret,omitempty"`
    11  	RedirectURI  string   `yaml:"redirectURI,omitempty"`
    12  	BaseURL      string   `yaml:"baseURL,omitempty"`
    13  	Groups       []string `yaml:"groups,omitempty"`
    14  	UseLoginAsID bool     `yaml:"useLoginAsID,omitempty"`
    15  }
    16  
    17  func getGitlab(spec *gitlab.Connector, redirect string) (interface{}, error) {
    18  	clientID, err := read.GetSecretValueOnlyIncluster(spec.Config.ClientID, spec.Config.ExistingClientIDSecret)
    19  	if err != nil {
    20  		return nil, err
    21  	}
    22  
    23  	clientSecret, err := read.GetSecretValueOnlyIncluster(spec.Config.ClientSecret, spec.Config.ExistingClientSecretSecret)
    24  	if err != nil {
    25  		return nil, err
    26  	}
    27  
    28  	if clientID == "" || clientSecret == "" {
    29  		return nil, nil
    30  	}
    31  
    32  	var groups []string
    33  	if len(spec.Config.Groups) > 0 {
    34  		groups = make([]string, len(spec.Config.Groups))
    35  		for k, v := range spec.Config.Groups {
    36  			groups[k] = v
    37  		}
    38  	}
    39  
    40  	gitlab := &gitlabConnector{
    41  		ClientID:     clientID,
    42  		ClientSecret: clientSecret,
    43  		RedirectURI:  redirect,
    44  		Groups:       groups,
    45  		UseLoginAsID: spec.Config.UseLoginAsID,
    46  	}
    47  
    48  	return gitlab, nil
    49  }