79 lines
1.6 KiB
Go
79 lines
1.6 KiB
Go
package auth
|
|
|
|
import (
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type noopAuth struct {
|
|
opts Options
|
|
}
|
|
|
|
// String returns the name of the implementation
|
|
func (n *noopAuth) String() string {
|
|
return "noop"
|
|
}
|
|
|
|
// Init the auth
|
|
func (n *noopAuth) Init(opts ...Option) {
|
|
for _, o := range opts {
|
|
o(&n.opts)
|
|
}
|
|
}
|
|
|
|
// Options set for auth
|
|
func (n *noopAuth) Options() Options {
|
|
return n.opts
|
|
}
|
|
|
|
// Generate a new account
|
|
func (n *noopAuth) Generate(id string, opts ...GenerateOption) (*Account, error) {
|
|
options := NewGenerateOptions(opts...)
|
|
|
|
return &Account{
|
|
ID: id,
|
|
Secret: options.Secret,
|
|
Metadata: options.Metadata,
|
|
Scopes: options.Scopes,
|
|
Issuer: n.Options().Issuer,
|
|
}, nil
|
|
}
|
|
|
|
// Grant access to a resource
|
|
func (n *noopAuth) Grant(rule *Rule) error {
|
|
return nil
|
|
}
|
|
|
|
// Revoke access to a resource
|
|
func (n *noopAuth) Revoke(rule *Rule) error {
|
|
return nil
|
|
}
|
|
|
|
// Rules used to verify requests
|
|
func (n *noopAuth) Rules(opts ...RulesOption) ([]*Rule, error) {
|
|
return []*Rule{}, nil
|
|
}
|
|
|
|
// Verify an account has access to a resource
|
|
func (n *noopAuth) Verify(acc *Account, res *Resource, opts ...VerifyOption) error {
|
|
return nil
|
|
}
|
|
|
|
// Inspect a token
|
|
func (n *noopAuth) Inspect(token string) (*Account, error) {
|
|
uid, err := uuid.NewRandom()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &Account{ID: uid.String(), Issuer: n.Options().Issuer}, nil
|
|
}
|
|
|
|
// Token generation using an account id and secret
|
|
func (n *noopAuth) Token(opts ...TokenOption) (*Token, error) {
|
|
return &Token{}, nil
|
|
}
|
|
|
|
// NewAuth returns new noop auth
|
|
func NewAuth(opts ...Option) Auth {
|
|
return &noopAuth{opts: NewOptions(opts...)}
|
|
}
|