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

35 lines
790 B
Go

package socket
import (
"context"
"time"
"github.com/getsentry/sentry-go"
"github.com/google/uuid"
"github.com/warmbly/warmbly/internal/errx"
"github.com/warmbly/warmbly/internal/pkg/crypt"
)
func (s *socketService) GenerateWebsocketToken(ctx context.Context, userID uuid.UUID) (string, *errx.Error) {
issuedAt := time.Now()
expiresAt := issuedAt.Add(SocketTTL)
id := uuid.New()
nonce, err := crypt.Nonce()
if err != nil {
sentry.CaptureException(err)
return "", errx.InternalError()
}
wsToken, err := s.tokenService.GenerateToken(userID, id, "", nonce, issuedAt, expiresAt)
if err != nil {
sentry.CaptureException(err)
return "", errx.InternalError()
}
if err := s.saveToken(ctx, id, nonce, expiresAt); err != nil {
return "", err
}
return wsToken, nil
}