Updated auth interface (#1384)
* Updated auth interface * Add Rule * Remove Rule * Return token from Renew * Renew => Refresh * Implement Tokens & Default Auth Implementation * Change default auth to noop * Change default auth to noop * Move token.Token to auth.Token * Remove Token from Account * Auth service implementation * Decode JWT locally * Cookie for secret * Move string to bottom of interface definition * Depricate auth_exclude * Update auth wrappers * Update go.sum Co-authored-by: Ben Toogood <ben@micro.mu>
This commit is contained in:
		
							
								
								
									
										96
									
								
								auth/token/options.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								auth/token/options.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | ||||
| package token | ||||
|  | ||||
| import ( | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/micro/go-micro/v2/store" | ||||
| ) | ||||
|  | ||||
| type Options struct { | ||||
| 	// Store to persist the tokens | ||||
| 	Store store.Store | ||||
| 	// PublicKey base64 encoded, used by JWT | ||||
| 	PublicKey string | ||||
| 	// PrivateKey base64 encoded, used by JWT | ||||
| 	PrivateKey string | ||||
| } | ||||
|  | ||||
| type Option func(o *Options) | ||||
|  | ||||
| // WithStore sets the token providers store | ||||
| func WithStore(s store.Store) Option { | ||||
| 	return func(o *Options) { | ||||
| 		o.Store = s | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithPublicKey sets the JWT public key | ||||
| func WithPublicKey(key string) Option { | ||||
| 	return func(o *Options) { | ||||
| 		o.PublicKey = key | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithPrivateKey sets the JWT private key | ||||
| func WithPrivateKey(key string) Option { | ||||
| 	return func(o *Options) { | ||||
| 		o.PrivateKey = key | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func NewOptions(opts ...Option) Options { | ||||
| 	var options Options | ||||
| 	for _, o := range opts { | ||||
| 		o(&options) | ||||
| 	} | ||||
| 	//set default store | ||||
| 	if options.Store == nil { | ||||
| 		options.Store = store.DefaultStore | ||||
| 	} | ||||
| 	return options | ||||
| } | ||||
|  | ||||
| type GenerateOptions struct { | ||||
| 	// Expiry for the token | ||||
| 	Expiry time.Duration | ||||
| 	// Metadata associated with the account | ||||
| 	Metadata map[string]string | ||||
| 	// Roles/scopes associated with the account | ||||
| 	Roles []string | ||||
| } | ||||
|  | ||||
| type GenerateOption func(o *GenerateOptions) | ||||
|  | ||||
| // WithExpiry for the generated account's token expires | ||||
| func WithExpiry(d time.Duration) GenerateOption { | ||||
| 	return func(o *GenerateOptions) { | ||||
| 		o.Expiry = d | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithMetadata for the token | ||||
| func WithMetadata(md map[string]string) func(o *GenerateOptions) { | ||||
| 	return func(o *GenerateOptions) { | ||||
| 		o.Metadata = md | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithRoles for the token | ||||
| func WithRoles(rs []string) func(o *GenerateOptions) { | ||||
| 	return func(o *GenerateOptions) { | ||||
| 		o.Roles = rs | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // NewGenerateOptions from a slice of options | ||||
| func NewGenerateOptions(opts ...GenerateOption) GenerateOptions { | ||||
| 	var options GenerateOptions | ||||
| 	for _, o := range opts { | ||||
| 		o(&options) | ||||
| 	} | ||||
| 	//set default Expiry of token | ||||
| 	if options.Expiry == 0 { | ||||
| 		options.Expiry = time.Minute * 15 | ||||
| 	} | ||||
| 	return options | ||||
| } | ||||
		Reference in New Issue
	
	Block a user