mirror of
https://github.com/teamhanko/hanko.git
synced 2025-10-26 21:57:14 +08:00
45 lines
1.3 KiB
Go
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
|
|
}
|