1
0
mirror of https://github.com/pocketbase/pocketbase.git synced 2025-03-20 22:36:00 +02:00
pocketbase/apis/record_auth.go

80 lines
2.6 KiB
Go
Raw Normal View History

2022-10-30 10:28:14 +02:00
package apis
import (
"github.com/pocketbase/pocketbase/core"
2024-09-29 19:23:19 +03:00
"github.com/pocketbase/pocketbase/tools/router"
2022-10-30 10:28:14 +02:00
)
// bindRecordAuthApi registers the auth record api endpoints and
// the corresponding handlers.
2024-09-29 19:23:19 +03:00
func bindRecordAuthApi(app core.App, rg *router.RouterGroup[*core.RequestEvent]) {
// global oauth2 subscription redirect handler
rg.GET("/oauth2-redirect", oauth2SubscriptionRedirect).Bind(
SkipSuccessActivityLog(), // skip success log as it could contain sensitive information in the url
)
2024-09-29 19:23:19 +03:00
// add again as POST in case of response_mode=form_post
rg.POST("/oauth2-redirect", oauth2SubscriptionRedirect).Bind(
SkipSuccessActivityLog(), // skip success log as it could contain sensitive information in the url
)
2022-10-30 10:28:14 +02:00
2024-09-29 19:23:19 +03:00
sub := rg.Group("/collections/{collection}")
2022-10-30 10:28:14 +02:00
2024-09-29 19:23:19 +03:00
sub.GET("/auth-methods", recordAuthMethods).Bind(
collectionPathRateLimit("", "listAuthMethods"),
)
2022-10-30 10:28:14 +02:00
2024-09-29 19:23:19 +03:00
sub.POST("/auth-refresh", recordAuthRefresh).Bind(
collectionPathRateLimit("", "authRefresh"),
RequireSameCollectionContextAuth(""),
)
2022-10-30 10:28:14 +02:00
2024-09-29 19:23:19 +03:00
sub.POST("/auth-with-password", recordAuthWithPassword).Bind(
collectionPathRateLimit("", "authWithPassword", "auth"),
)
2022-10-30 10:28:14 +02:00
2024-09-29 19:23:19 +03:00
sub.POST("/auth-with-oauth2", recordAuthWithOAuth2).Bind(
collectionPathRateLimit("", "authWithOAuth2", "auth"),
)
2022-10-30 10:28:14 +02:00
2024-09-29 19:23:19 +03:00
sub.POST("/request-otp", recordRequestOTP).Bind(
collectionPathRateLimit("", "requestOTP"),
)
sub.POST("/auth-with-otp", recordAuthWithOTP).Bind(
collectionPathRateLimit("", "authWithOTP", "auth"),
)
2023-07-20 10:40:03 +03:00
2024-09-29 19:23:19 +03:00
sub.POST("/request-password-reset", recordRequestPasswordReset).Bind(
collectionPathRateLimit("", "requestPasswordReset"),
)
sub.POST("/confirm-password-reset", recordConfirmPasswordReset).Bind(
collectionPathRateLimit("", "confirmPasswordReset"),
)
2024-09-29 19:23:19 +03:00
sub.POST("/request-verification", recordRequestVerification).Bind(
collectionPathRateLimit("", "requestVerification"),
)
sub.POST("/confirm-verification", recordConfirmVerification).Bind(
collectionPathRateLimit("", "confirmVerification"),
)
2024-09-29 19:23:19 +03:00
sub.POST("/request-email-change", recordRequestEmailChange).Bind(
collectionPathRateLimit("", "requestEmailChange"),
RequireSameCollectionContextAuth(""),
)
sub.POST("/confirm-email-change", recordConfirmEmailChange).Bind(
collectionPathRateLimit("", "confirmEmailChange"),
)
2024-09-29 19:23:19 +03:00
sub.POST("/impersonate/{id}", recordAuthImpersonate).Bind(RequireSuperuserAuth())
}
2024-09-29 19:23:19 +03:00
func findAuthCollection(e *core.RequestEvent) (*core.Collection, error) {
collection, err := e.App.FindCachedCollectionByNameOrId(e.Request.PathValue("collection"))
2024-09-29 19:23:19 +03:00
if err != nil || !collection.IsAuth() {
return nil, e.NotFoundError("Missing or invalid auth collection context.", err)
}
2024-09-29 19:23:19 +03:00
return collection, nil
}