2020-02-03 11:16:02 +03:00
|
|
|
package auth
|
|
|
|
|
2020-02-26 16:42:32 +03:00
|
|
|
import (
|
2020-03-23 19:19:30 +03:00
|
|
|
"github.com/google/uuid"
|
2020-02-26 16:42:32 +03:00
|
|
|
)
|
|
|
|
|
2020-02-03 11:16:02 +03:00
|
|
|
var (
|
2020-02-24 18:07:27 +03:00
|
|
|
DefaultAuth = NewAuth()
|
2020-02-03 11:16:02 +03:00
|
|
|
)
|
|
|
|
|
2020-02-24 18:07:27 +03:00
|
|
|
func NewAuth(opts ...Option) Auth {
|
2020-03-23 19:19:30 +03:00
|
|
|
return &noop{}
|
2020-02-03 11:16:02 +03:00
|
|
|
}
|
|
|
|
|
2020-03-23 19:19:30 +03:00
|
|
|
type noop struct {
|
2020-02-26 01:15:44 +03:00
|
|
|
opts Options
|
|
|
|
}
|
2020-02-03 11:16:02 +03:00
|
|
|
|
2020-03-23 19:19:30 +03:00
|
|
|
// String returns the name of the implementation
|
|
|
|
func (n *noop) String() string {
|
|
|
|
return "noop"
|
|
|
|
}
|
|
|
|
|
|
|
|
// Init the auth
|
|
|
|
func (n *noop) Init(opts ...Option) {
|
2020-02-26 01:15:44 +03:00
|
|
|
for _, o := range opts {
|
|
|
|
o(&n.opts)
|
|
|
|
}
|
2020-02-03 11:16:02 +03:00
|
|
|
}
|
|
|
|
|
2020-03-23 19:19:30 +03:00
|
|
|
// Options set for auth
|
|
|
|
func (n *noop) Options() Options {
|
2020-02-26 01:15:44 +03:00
|
|
|
return n.opts
|
2020-02-10 11:26:28 +03:00
|
|
|
}
|
|
|
|
|
2020-03-23 19:19:30 +03:00
|
|
|
// Generate a new account
|
2020-03-31 21:01:43 +03:00
|
|
|
func (n *noop) Generate(id string, opts ...GenerateOption) (*Account, error) {
|
2020-03-23 19:19:30 +03:00
|
|
|
options := NewGenerateOptions(opts...)
|
2020-02-26 16:42:32 +03:00
|
|
|
|
2020-03-23 19:19:30 +03:00
|
|
|
return &Account{
|
2020-03-31 20:17:01 +03:00
|
|
|
ID: id,
|
|
|
|
Roles: options.Roles,
|
|
|
|
Metadata: options.Metadata,
|
|
|
|
RefreshToken: uuid.New().String(),
|
2020-03-23 19:19:30 +03:00
|
|
|
}, nil
|
2020-02-03 11:16:02 +03:00
|
|
|
}
|
|
|
|
|
2020-03-31 20:17:01 +03:00
|
|
|
// Login to an existing account
|
2020-03-31 21:01:43 +03:00
|
|
|
func (n *noop) Login(id string, opts ...LoginOption) (*Account, error) {
|
2020-03-31 20:17:01 +03:00
|
|
|
return &Account{ID: id}, nil
|
|
|
|
}
|
|
|
|
|
2020-03-23 19:19:30 +03:00
|
|
|
// Grant access to a resource
|
|
|
|
func (n *noop) Grant(role string, res *Resource) error {
|
2020-02-03 11:16:02 +03:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-03-23 19:19:30 +03:00
|
|
|
// Revoke access to a resource
|
|
|
|
func (n *noop) Revoke(role string, res *Resource) error {
|
|
|
|
return nil
|
|
|
|
}
|
2020-02-26 16:42:32 +03:00
|
|
|
|
2020-03-23 19:19:30 +03:00
|
|
|
// Verify an account has access to a resource
|
|
|
|
func (n *noop) Verify(acc *Account, res *Resource) error {
|
|
|
|
return nil
|
|
|
|
}
|
2020-02-26 16:42:32 +03:00
|
|
|
|
2020-03-23 19:19:30 +03:00
|
|
|
// Inspect a token
|
|
|
|
func (n *noop) Inspect(token string) (*Account, error) {
|
2020-03-27 12:46:17 +03:00
|
|
|
return &Account{
|
2020-03-27 12:54:29 +03:00
|
|
|
ID: uuid.New().String(),
|
2020-03-27 12:46:17 +03:00
|
|
|
}, nil
|
2020-02-03 11:16:02 +03:00
|
|
|
}
|
2020-02-24 18:07:27 +03:00
|
|
|
|
2020-03-31 12:06:13 +03:00
|
|
|
// Token generation using an account id and secret
|
2020-03-31 20:17:01 +03:00
|
|
|
func (n *noop) Token(id, tok string, opts ...TokenOption) (*Token, error) {
|
2020-03-23 19:19:30 +03:00
|
|
|
return &Token{}, nil
|
2020-02-24 18:07:27 +03:00
|
|
|
}
|