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