Files
warmbly/internal/app/auth/gen.go
T
2026-01-17 14:11:14 +00:00

43 lines
967 B
Go

package auth
import (
"context"
"time"
"github.com/getsentry/sentry-go"
"github.com/google/uuid"
"github.com/warmbly/warmbly/internal/errx"
"github.com/warmbly/warmbly/internal/models"
"github.com/warmbly/warmbly/internal/pkg/argon2"
)
func (s *authService) GenerateLoginSession(ctx context.Context, userID uuid.UUID, code string) (string, *errx.Error) {
sessID := uuid.New()
issuedAt := time.Now()
expiresAt := issuedAt.Add(SessionTTL)
codeHash, err := argon2.Hash(code)
if err != nil {
sentry.CaptureException(err)
return "", errx.InternalError()
}
loginSession := &models.LoginSession{
CodeHash: codeHash,
Tries: 0,
}
if err := s.saveLoginSession(ctx, sessID, loginSession, expiresAt); err != nil {
return "", err
}
sessionToken, err := s.tokenService.GenerateToken(userID, sessID, "", "", issuedAt, expiresAt)
if err != nil {
sentry.CaptureException(err)
return "", errx.InternalError()
}
return sessionToken, nil
}