mirror of
https://github.com/warmbly/warmbly.git
synced 2026-08-19 16:01:16 +00:00
43 lines
967 B
Go
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
|
|
}
|