mirror of https://github.com/docker/cli.git
46 lines
1.1 KiB
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)
|
|
}
|