| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package helper
- import (
- "github.com/docker/docker-credential-helpers/credentials"
- api "github.com/porter-dev/porter/api/client"
- "github.com/porter-dev/porter/cli/cmd/config"
- "github.com/porter-dev/porter/cli/cmd/docker"
- )
- // PorterHelper implements credentials.Helper: it acts as a credentials
- // helper for Docker that allows authentication with different registries.
- type PorterHelper struct {
- Debug bool
- ProjectID uint
- AuthGetter *docker.AuthGetter
- Cache docker.CredentialsCache
- }
- func NewPorterHelper(debug bool) *PorterHelper {
- // get the current project ID
- cliConfig := config.InitAndLoadNewConfig()
- cache := docker.NewFileCredentialsCache()
- var client *api.Client
- if token := cliConfig.Token; token != "" {
- client = api.NewClientWithToken(cliConfig.Host+"/api", token)
- } else {
- client = api.NewClient(cliConfig.Host+"/api", "cookie.json")
- }
- return &PorterHelper{
- Debug: debug,
- ProjectID: cliConfig.Project,
- AuthGetter: &docker.AuthGetter{
- Client: client,
- Cache: cache,
- ProjectID: cliConfig.Project,
- },
- Cache: cache,
- }
- }
- // Add appends credentials to the store.
- func (p *PorterHelper) Add(cr *credentials.Credentials) error {
- // Doesn't seem to be called
- return nil
- }
- // Delete removes credentials from the store.
- func (p *PorterHelper) Delete(serverURL string) error {
- // Doesn't seem to be called
- return nil
- }
- // Get retrieves credentials from the store.
- // It returns username and secret as strings.
- func (p *PorterHelper) Get(serverURL string) (user string, secret string, err error) {
- return p.AuthGetter.GetCredentials(serverURL)
- }
- // List returns the stored serverURLs and their associated usernames.
- func (p *PorterHelper) List() (map[string]string, error) {
- entries := p.Cache.List()
- res := make(map[string]string)
- for _, entry := range entries {
- res[entry.ProxyEndpoint] = entry.AuthorizationToken
- }
- return res, nil
- }
|