DockerCLI/vendor/github.com/docker/licensing/lib/go-auth/identity/identity.go

46 lines
1.1 KiB
Go

package identity
import (
"context"
"fmt"
)
// DockerIdentity identifies a Docker user.
type DockerIdentity struct {
DockerID string
Username string
FullName string
Email string
Scopes []string
}
func (di DockerIdentity) String() string {
return fmt.Sprintf("{docker_id=%v, username=%v, email=%v, scopes=%v}",
di.DockerID, di.Username, di.Email, di.Scopes)
}
// HasScope returns true if the exact input scope is present in the scopes list.
func (di DockerIdentity) HasScope(scope string) bool {
for i := range di.Scopes {
if di.Scopes[i] == scope {
return true
}
}
return false
}
type keyType int
var identityContextKey keyType
// FromContext returns the DockerIdentity value stored in ctx, if any.
func FromContext(ctx context.Context) (*DockerIdentity, bool) {
identity, ok := ctx.Value(identityContextKey).(*DockerIdentity)
return identity, ok
}
// NewContext returns a new Context that carries value identity.
func NewContext(ctx context.Context, identity *DockerIdentity) context.Context {
return context.WithValue(ctx, identityContextKey, identity)
}