Files
hanko/backend/handler/helpers_test.go
2025-09-25 19:15:20 +02:00

45 lines
1.3 KiB
Go

package handler
import (
"net/http"
"time"
"github.com/gofrs/uuid"
"github.com/teamhanko/hanko/backend/v2/crypto/jwk"
"github.com/teamhanko/hanko/backend/v2/dto"
"github.com/teamhanko/hanko/backend/v2/persistence"
"github.com/teamhanko/hanko/backend/v2/persistence/models"
"github.com/teamhanko/hanko/backend/v2/session"
"github.com/teamhanko/hanko/backend/v2/test"
)
func getDefaultSessionManager(storage persistence.Persister) session.Manager {
jwkManager, _ := jwk.NewDefaultManager(test.DefaultConfig.Secrets.Keys, storage.GetJwkPersister())
sessionManager, _ := session.NewManager(jwkManager, test.DefaultConfig)
return sessionManager
}
func generateSessionCookie(storage persistence.Persister, userId uuid.UUID) (*http.Cookie, error) {
manager := getDefaultSessionManager(storage)
token, rawToken, err := manager.GenerateJWT(dto.UserJWT{
UserID: userId.String(),
})
if err != nil {
return nil, err
}
sessionID, _ := rawToken.Get("session_id")
_ = storage.GetSessionPersister().Create(models.Session{
ID: uuid.FromStringOrNil(sessionID.(string)),
UserID: userId,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
ExpiresAt: nil,
LastUsed: time.Now(),
})
cookie, err := manager.GenerateCookie(token)
if err != nil {
return nil, err
}
return cookie, nil
}