mirror of
https://github.com/Theodor-Springmann-Stiftung/musenalm.git
synced 2025-10-29 01:05:32 +00:00
Registration form for new users
This commit is contained in:
47
dbmodels/access_tokens_functions.go
Normal file
47
dbmodels/access_tokens_functions.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package dbmodels
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
"github.com/pocketbase/pocketbase/tools/types"
|
||||
)
|
||||
|
||||
func CreateAccessToken(
|
||||
app core.App,
|
||||
userID string,
|
||||
url string,
|
||||
duration time.Duration,
|
||||
) (*AccessToken, error) {
|
||||
collection, err := app.FindCollectionByNameOrId(ACCESS_TOKENS_TABLE)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to find '%s' collection: %w", ACCESS_TOKENS_TABLE, err)
|
||||
}
|
||||
|
||||
accesTokenClear, err := generateSecureRandomToken(secureTokenByteLength)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to generate session token: %w", err)
|
||||
}
|
||||
|
||||
csrfTokenClear, err := generateSecureRandomToken(secureTokenByteLength)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to generate CSRF token: %w", err)
|
||||
}
|
||||
|
||||
record := core.NewRecord(collection)
|
||||
token := NewAccessToken(record)
|
||||
|
||||
token.SetToken(accesTokenClear)
|
||||
token.SetCSRF(csrfTokenClear)
|
||||
token.SetUser(userID)
|
||||
token.SetURL(url)
|
||||
token.SetStatus(TOKEN_STATUS_VALUES[0]) // Active
|
||||
token.SetExpires(types.NowDateTime().Add(duration))
|
||||
|
||||
if err := app.Save(record); err != nil {
|
||||
return nil, fmt.Errorf("failed to save access token record: %w", err)
|
||||
}
|
||||
|
||||
return token, nil
|
||||
}
|
||||
Reference in New Issue
Block a user