summaryrefslogtreecommitdiff
path: root/player-server/internal/auth/token.go
diff options
context:
space:
mode:
Diffstat (limited to 'player-server/internal/auth/token.go')
-rw-r--r--player-server/internal/auth/token.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/player-server/internal/auth/token.go b/player-server/internal/auth/token.go
index bdb7e6b..bcb696f 100644
--- a/player-server/internal/auth/token.go
+++ b/player-server/internal/auth/token.go
@@ -20,14 +20,17 @@ func NewTokenManager() TokenManager {
}
// Generate creates a plaintext API token and its stored hash.
-func (m *tokenManager) Generate() (plaintext, hash string) {
+// Returns an error if the system random source fails. A crypto/rand.Read
+// failure indicates a process-level emergency, so callers should propagate
+// the error upward rather than masking it.
+func (m *tokenManager) Generate() (plaintext, hash string, err error) {
b := make([]byte, tokenByteLength)
if _, err := rand.Read(b); err != nil {
- panic(fmt.Sprintf("generate token: %v", err))
+ return "", "", fmt.Errorf("generate token: %w", err)
}
plaintext = hex.EncodeToString(b)
- return plaintext, m.Hash(plaintext)
+ return plaintext, m.Hash(plaintext), nil
}
// Hash returns the SHA-256 hash of a plaintext API token.