Auth Wrapper (#1174)

* Auth Wrapper

* Tweak cmd flag

* auth_excludes => auth_exclude

* Make Auth.Excludes variadic

* Use metadata.Get (passes through http and http2 it will go through various case formats)

* fix auth wrapper auth.Auth interface initialisation

Co-authored-by: Asim Aslam <asim@aslam.me>
This commit is contained in:
ben-toogood
2020-02-10 08:26:28 +00:00
committed by GitHub
parent c706afcf04
commit 4401c12e6c
9 changed files with 111 additions and 18 deletions

View File

@@ -11,6 +11,8 @@ type Auth interface {
String() string
// Init the auth package
Init(opts ...Option) error
// Options returns the options set
Options() Options
// Generate a new auth Account
Generate(id string, opts ...GenerateOption) (*Account, error)
// Revoke an authorization Account

View File

@@ -18,6 +18,11 @@ func (a *noop) Init(...Option) error {
return nil
}
// Options set in init
func (a *noop) Options() Options {
return a.options
}
// Generate a new auth Account
func (a *noop) Generate(id string, ops ...GenerateOption) (*Account, error) {
return nil, nil

View File

@@ -33,6 +33,10 @@ func (s *svc) String() string {
return "jwt"
}
func (s *svc) Options() auth.Options {
return s.options
}
func (s *svc) Init(opts ...auth.Option) error {
for _, o := range opts {
o(&s.options)

View File

@@ -7,10 +7,18 @@ import (
type Options struct {
PublicKey []byte
PrivateKey []byte
Excludes []string
}
type Option func(o *Options)
// Excludes endpoints from auth
func Excludes(excludes ...string) Option {
return func(o *Options) {
o.Excludes = excludes
}
}
// PublicKey is the JWT public key
func PublicKey(key string) Option {
return func(o *Options) {

View File

@@ -37,6 +37,10 @@ func (s *svc) Init(opts ...auth.Option) error {
return nil
}
func (s *svc) Options() auth.Options {
return s.options
}
// Generate a new auth account
func (s *svc) Generate(id string, opts ...auth.GenerateOption) (*auth.Account, error) {
// construct the request