Documentation ¶
Index ¶
- func AddRoutes(s *Server, e *echo.Echo)
- func ErrBadRequest(c echo.Context, err error) error
- func ErrConflict(c echo.Context, err error) error
- func ErrEntityTooLarge(c echo.Context, err error) error
- func ErrForbidden(c echo.Context, err error) error
- func ErrNotFound(c echo.Context, err error) error
- func ErrResponse(c echo.Context, status int, msg string) error
- func ErrUnauthorized(c echo.Context, err error) error
- func ErrorHandler(err error, c echo.Context)
- func JSON(c echo.Context, status int, i interface{}) error
- func NewHandler(s *Server) http.Handler
- func SetContextLogger(l ContextLogger)
- type Access
- type AccessAction
- type AccessContext
- type AccessFn
- type AccessResource
- type AuthResult
- type ContextLogger
- type Fire
- type LogLevel
- type Logger
- type MemCache
- type Server
- type Tasks
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ErrEntityTooLarge ¶
ErrEntityTooLarge response.
func ErrResponse ¶
ErrResponse is a generate error response.
func ErrUnauthorized ¶
ErrUnauthorized response.
func ErrorHandler ¶
func ErrorHandler(err error, c echo.Context)
ErrorHandler returns error handler that returns in the format: {"error": {"message": "error message", status: 500}}".
func NewHandler ¶
NewHandler returns http.Handler for Server.
func SetContextLogger ¶
func SetContextLogger(l ContextLogger)
SetContextLogger sets logger for the package.
Types ¶
type Access ¶
type Access struct { Allow bool Message string // StatusCode (optional) for custom HTTP status (if denied) StatusCode int }
Access returns whether to allow or deny.
func AccessDenyErrored ¶
AccessDenyErrored deny access (an error occurred trying to determine access).
func AccessDenyTooManyRequests ¶
AccessDenyTooManyRequests deny access (too many requests).
type AccessAction ¶
type AccessAction string
AccessAction is action for access control.
const ( // Put action. Put AccessAction = "put" // Post action. Post AccessAction = "post" )
type AccessContext ¶
AccessContext is context for request.
type AccessFn ¶
type AccessFn func(c AccessContext, resource AccessResource, action AccessAction) Access
AccessFn returns access to resource. If error message begins with an integer, it will use that as the http status code. For example, "429: too many requests".
type AccessResource ¶
type AccessResource string
AccessResource is resource for access control.
const ( // UserPublicKeyResource for a user public key. UserPublicKeyResource AccessResource = "user-public-key" // SigchainResource for sigchain. SigchainResource AccessResource = "sigchain" )
type AuthResult ¶
type AuthResult struct {
// contains filtered or unexported fields
}
AuthResult is the authorized result.
func CheckAuthorization ¶
func CheckAuthorization(ctx context.Context, method string, urs string, auth string, mc MemCache, now time.Time) (*AuthResult, error)
CheckAuthorization returns error if authorization fails. The auth is of the form: <PKID>:<SIG> The <SIG> is the detached signature of <METHOD>,<URL>.
type ContextLogger ¶
type ContextLogger interface { Debugf(ctx context.Context, format string, args ...interface{}) Infof(ctx context.Context, format string, args ...interface{}) Warningf(ctx context.Context, format string, args ...interface{}) Errorf(ctx context.Context, format string, args ...interface{}) }
ContextLogger interface used in this package with request context.
type Fire ¶
type Fire interface { keyup.DocumentStore keyup.Changes }
Fire defines interface for remote store (like Firestore).
type Logger ¶
type Logger interface { Debugf(format string, args ...interface{}) Infof(format string, args ...interface{}) Warningf(format string, args ...interface{}) Errorf(format string, args ...interface{}) }
Logger interface used in this package.
type MemCache ¶
type MemCache interface { // Get returns value at key. Get(ctx context.Context, k string) (string, error) // Put puts a value at key. Set(ctx context.Context, k string, v string) error // Expire key. Expire(ctx context.Context, k string, dt time.Duration) error }
MemCache defines interface for memcache. Used to prevent nonce re-use for authenticated requests.
func NewMemTestCache ¶
NewMemTestCache returns in memory MemCache (for testing).
type Server ¶
type Server struct { // URL (base) of form http://host:port with no trailing slash to help // authorization checks in testing where the host is ambiguous. URL string // contains filtered or unexported fields }
Server ...
func (*Server) SetAccessFn ¶
SetAccessFn sets access control.
func (*Server) SetInternalAuth ¶
SetInternalAuth for authorizing internal requests, like tasks.