micro/auth/auth.go

56 lines
1.3 KiB
Go
Raw Normal View History

2019-11-25 12:30:26 +03:00
// Package auth provides authentication and authorization capability
package auth
2019-11-25 12:33:30 +03:00
import (
"time"
)
2019-11-25 12:30:26 +03:00
// Auth providers authentication and authorization
type Auth interface {
// 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
Revoke(token string) error
// Verify an account token
Verify(token string) (*Account, error)
2020-02-16 22:36:45 +03:00
// String returns the implementation
String() string
2019-12-18 00:27:05 +03:00
}
// Resource is an entity such as a user or
type Resource struct {
2019-12-18 00:27:05 +03:00
// Name of the resource
Name string
// Type of resource, e.g.
Type string
2019-11-25 12:30:26 +03:00
}
// Role an account has
type Role struct {
// Name of the role
Name string
// The resource it has access
// TODO: potentially remove
Resource *Resource
}
// Account provided by an auth provider
type Account struct {
// ID of the account (UUID or email)
2020-02-14 10:32:02 +03:00
Id string `json:"id"`
// Token used to authenticate
2020-02-14 10:32:02 +03:00
Token string `json:"token"`
// Time of Account creation
2019-11-25 12:30:26 +03:00
Created time.Time `json:"created"`
// Time of Account expiry
2019-11-25 12:30:26 +03:00
Expiry time.Time `json:"expiry"`
// Roles associated with the Account
Roles []*Role `json:"roles"`
2019-11-25 12:30:26 +03:00
// Any other associated metadata
Metadata map[string]string `json:"metadata"`
}