mirror of
https://github.com/pocketbase/pocketbase.git
synced 2025-02-15 09:12:58 +02:00
30 lines
872 B
Go
30 lines
872 B
Go
package apis
|
|
|
|
import (
|
|
"github.com/pocketbase/pocketbase/core"
|
|
"github.com/pocketbase/pocketbase/tools/security"
|
|
"github.com/spf13/cast"
|
|
)
|
|
|
|
func recordAuthRefresh(e *core.RequestEvent) error {
|
|
record := e.Auth
|
|
if record == nil {
|
|
return e.NotFoundError("Missing auth record context.", nil)
|
|
}
|
|
|
|
currentToken := getAuthTokenFromRequest(e)
|
|
claims, _ := security.ParseUnverifiedJWT(currentToken)
|
|
if v, ok := claims[core.TokenClaimRefreshable]; !ok || !cast.ToBool(v) {
|
|
return e.ForbiddenError("The current auth token is not refreshable.", nil)
|
|
}
|
|
|
|
event := new(core.RecordAuthRefreshRequestEvent)
|
|
event.RequestEvent = e
|
|
event.Collection = record.Collection()
|
|
event.Record = record
|
|
|
|
return e.App.OnRecordAuthRefreshRequest().Trigger(event, func(e *core.RecordAuthRefreshRequestEvent) error {
|
|
return RecordAuthResponse(e.RequestEvent, e.Record, "", nil)
|
|
})
|
|
}
|