Documentation ¶
Overview ¶
Package apis implements the default PocketBase api services and middlewares.
Index ¶
- Constants
- func ActivityLogger(app core.App) echo.MiddlewareFunc
- func EnrichRecord(c echo.Context, dao *daos.Dao, record *models.Record, defaultExpands ...string) error
- func EnrichRecords(c echo.Context, dao *daos.Dao, records []*models.Record, ...) error
- func InitApi(app core.App) (*echo.Echo, error)
- func LoadAuthContext(app core.App) echo.MiddlewareFunc
- func LoadCollectionContext(app core.App, optCollectionTypes ...string) echo.MiddlewareFunc
- func RecordAuthResponse(app core.App, c echo.Context, authRecord *models.Record, meta any) error
- func RequestData(c echo.Context) *models.RequestData
- func RequireAdminAuth() echo.MiddlewareFunc
- func RequireAdminAuthOnlyIfAny(app core.App) echo.MiddlewareFunc
- func RequireAdminOrOwnerAuth(ownerIdParam string) echo.MiddlewareFunc
- func RequireAdminOrRecordAuth(optCollectionNames ...string) echo.MiddlewareFunc
- func RequireGuestOnly() echo.MiddlewareFunc
- func RequireRecordAuth(optCollectionNames ...string) echo.MiddlewareFunc
- func RequireSameContextRecordAuth() echo.MiddlewareFunc
- func StaticDirectoryHandler(fileSystem fs.FS, indexFallback bool) echo.HandlerFunc
- type ApiError
- func NewApiError(status int, message string, data any) *ApiError
- func NewBadRequestError(message string, data any) *ApiError
- func NewForbiddenError(message string, data any) *ApiError
- func NewNotFoundError(message string, data any) *ApiError
- func NewUnauthorizedError(message string, data any) *ApiError
Constants ¶
const ( ContextAdminKey string = "admin" ContextAuthRecordKey string = "authRecord" ContextCollectionKey string = "collection" )
Common request context keys used by the middlewares and api handlers.
const ContextRequestDataKey = "requestData"
Variables ¶
This section is empty.
Functions ¶
func ActivityLogger ¶
ActivityLogger middleware takes care to save the request information into the logs database.
The middleware does nothing if the app logs retention period is zero (aka. app.Settings().Logs.MaxDays = 0).
func EnrichRecord ¶ added in v0.8.0
func EnrichRecord(c echo.Context, dao *daos.Dao, record *models.Record, defaultExpands ...string) error
EnrichRecord parses the request context and enrich the provided record:
- expands relations (if defaultExpands and/or ?expand query param is set)
- ensures that the emails of the auth record and its expanded auth relations are visibe only for the current logged admin, record owner or record with manage access
func EnrichRecords ¶ added in v0.8.0
func EnrichRecords(c echo.Context, dao *daos.Dao, records []*models.Record, defaultExpands ...string) error
EnrichRecords parses the request context and enriches the provided records:
- expands relations (if defaultExpands and/or ?expand query param is set)
- ensures that the emails of the auth records and their expanded auth relations are visibe only for the current logged admin, record owner or record with manage access
func InitApi ¶
InitApi creates a configured echo instance with registered system and app specific routes and middlewares.
func LoadAuthContext ¶
LoadAuthContext middleware reads the Authorization request header and loads the token related record or admin instance into the request's context.
This middleware is expected to be already registered by default for all routes.
func LoadCollectionContext ¶
LoadCollectionContext middleware finds the collection with related path identifier and loads it into the request context.
Set optCollectionTypes to further filter the found collection by its type.
func RecordAuthResponse ¶ added in v0.12.0
func RequestData ¶ added in v0.8.0
func RequestData(c echo.Context) *models.RequestData
RequestData exports cached common request data fields (query, body, logged auth state, etc.) from the provided context.
func RequireAdminAuth ¶
func RequireAdminAuth() echo.MiddlewareFunc
RequireAdminAuth middleware requires a request to have a valid admin Authorization header.
func RequireAdminAuthOnlyIfAny ¶ added in v0.2.0
RequireAdminAuthOnlyIfAny middleware requires a request to have a valid admin Authorization header ONLY if the application has at least 1 existing Admin model.
func RequireAdminOrOwnerAuth ¶
func RequireAdminOrOwnerAuth(ownerIdParam string) echo.MiddlewareFunc
RequireAdminOrOwnerAuth middleware requires a request to have a valid admin or auth record owner Authorization header set.
This middleware is similar to [apis.RequireAdminOrRecordAuth()] but for the auth record token expects to have the same id as the path parameter ownerIdParam (default to "id" if empty).
func RequireAdminOrRecordAuth ¶ added in v0.8.0
func RequireAdminOrRecordAuth(optCollectionNames ...string) echo.MiddlewareFunc
RequireAdminOrRecordAuth middleware requires a request to have a valid admin or record Authorization header set.
You can further filter the allowed auth record collections by providing their names.
This middleware is the opposite of [apis.RequireGuestOnly()].
func RequireGuestOnly ¶
func RequireGuestOnly() echo.MiddlewareFunc
RequireGuestOnly middleware requires a request to NOT have a valid Authorization header.
This middleware is the opposite of [apis.RequireAdminOrRecordAuth()].
func RequireRecordAuth ¶ added in v0.8.0
func RequireRecordAuth(optCollectionNames ...string) echo.MiddlewareFunc
RequireRecordAuth middleware requires a request to have a valid record auth Authorization header.
The auth record could be from any collection.
You can further filter the allowed record auth collections by specifying their names.
Example:
apis.RequireRecordAuth()
Or:
apis.RequireRecordAuth("users", "supervisors")
To restrict the auth record only to the loaded context collection, use [apis.RequireSameContextRecordAuth()] instead.
func RequireSameContextRecordAuth ¶ added in v0.8.0
func RequireSameContextRecordAuth() echo.MiddlewareFunc
RequireSameContextRecordAuth middleware requires a request to have a valid record Authorization header.
The auth record must be from the same collection already loaded in the context.
func StaticDirectoryHandler ¶
StaticDirectoryHandler is similar to `echo.StaticDirectoryHandler` but without the directory redirect which conflicts with RemoveTrailingSlash middleware.
If a file resource is missing and indexFallback is set, the request will be forwarded to the base index.html (useful also for SPA).
Types ¶
type ApiError ¶ added in v0.8.0
type ApiError struct { Code int `json:"code"` Message string `json:"message"` Data map[string]any `json:"data"` // contains filtered or unexported fields }
ApiError defines the struct for a basic api error response.
func NewApiError ¶ added in v0.8.0
NewApiError creates and returns new normalized `ApiError` instance.
func NewBadRequestError ¶ added in v0.8.0
NewBadRequestError creates and returns 400 `ApiError`.
func NewForbiddenError ¶ added in v0.8.0
NewForbiddenError creates and returns 403 `ApiError`.
func NewNotFoundError ¶ added in v0.8.0
NewNotFoundError creates and returns 404 `ApiError`.
func NewUnauthorizedError ¶ added in v0.8.0
NewUnauthorizedError creates and returns 401 `ApiError`.