micro/auth/provider/provider.go
2020-04-01 15:36:22 +01:00

41 lines
768 B
Go

// Package provider is an external auth provider e.g oauth
package provider
import (
"time"
)
// Provider is an auth provider
type Provider interface {
// String returns the name of the provider
String() string
// Options returns the options of a provider
Options() Options
// Endpoint for the provider
Endpoint(...EndpointOption) string
// Redirect url incase of UI
Redirect() string
}
// Grant is a granted authorisation
type Grant struct {
// token for reuse
Token string
// Expiry of the token
Expiry time.Time
// Scopes associated with grant
Scopes []string
}
type EndpointOptions struct {
Code string
}
type EndpointOption func(*EndpointOptions)
func WithCode(c string) EndpointOption {
return func(o *EndpointOptions) {
o.Code = c
}
}