60 lines
2.1 KiB
Go
60 lines
2.1 KiB
Go
|
package osin
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
// ErrNotFound is the error returned by Storage Get<...> and Load<...> functions in case
|
||
|
// no entity is found in the storage. E.g. Storage.GetClient() returns ErrNotFound when
|
||
|
// client is not found. All other returned errors must be treated as storage-specific errors,
|
||
|
// like "connection lost", "connection refused", etc.
|
||
|
ErrNotFound = errors.New("Entity not found")
|
||
|
)
|
||
|
|
||
|
// Storage interface
|
||
|
type Storage interface {
|
||
|
// Clone the storage if needed. For example, using mgo, you can clone the session with session.Clone
|
||
|
// to avoid concurrent access problems.
|
||
|
// This is to avoid cloning the connection at each method access.
|
||
|
// Can return itself if not a problem.
|
||
|
Clone() Storage
|
||
|
|
||
|
// Close the resources the Storage potentially holds (using Clone for example)
|
||
|
Close()
|
||
|
|
||
|
// GetClient loads the client by id (client_id)
|
||
|
GetClient(id string) (Client, error)
|
||
|
|
||
|
// SaveAuthorize saves authorize data.
|
||
|
SaveAuthorize(*AuthorizeData) error
|
||
|
|
||
|
// LoadAuthorize looks up AuthorizeData by a code.
|
||
|
// Client information MUST be loaded together.
|
||
|
// Optionally can return error if expired.
|
||
|
LoadAuthorize(code string) (*AuthorizeData, error)
|
||
|
|
||
|
// RemoveAuthorize revokes or deletes the authorization code.
|
||
|
RemoveAuthorize(code string) error
|
||
|
|
||
|
// SaveAccess writes AccessData.
|
||
|
// If RefreshToken is not blank, it must save in a way that can be loaded using LoadRefresh.
|
||
|
SaveAccess(*AccessData) error
|
||
|
|
||
|
// LoadAccess retrieves access data by token. Client information MUST be loaded together.
|
||
|
// AuthorizeData and AccessData DON'T NEED to be loaded if not easily available.
|
||
|
// Optionally can return error if expired.
|
||
|
LoadAccess(token string) (*AccessData, error)
|
||
|
|
||
|
// RemoveAccess revokes or deletes an AccessData.
|
||
|
RemoveAccess(token string) error
|
||
|
|
||
|
// LoadRefresh retrieves refresh AccessData. Client information MUST be loaded together.
|
||
|
// AuthorizeData and AccessData DON'T NEED to be loaded if not easily available.
|
||
|
// Optionally can return error if expired.
|
||
|
LoadRefresh(token string) (*AccessData, error)
|
||
|
|
||
|
// RemoveRefresh revokes or deletes refresh AccessData.
|
||
|
RemoveRefresh(token string) error
|
||
|
}
|