diff options
Diffstat (limited to 'internal/handler/websocket/handler.go')
| -rw-r--r-- | internal/handler/websocket/handler.go | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/internal/handler/websocket/handler.go b/internal/handler/websocket/handler.go index 35d0aea..5201698 100644 --- a/internal/handler/websocket/handler.go +++ b/internal/handler/websocket/handler.go | |||
| @@ -262,8 +262,16 @@ func (h *Handler) handleEvent(ctx context.Context, conn *websocket.Conn, raw []j | |||
| 262 | return err | 262 | return err |
| 263 | } | 263 | } |
| 264 | 264 | ||
| 265 | // Parse event to get ID for OK response | ||
| 266 | var event nostr.Event | ||
| 267 | if err := json.Unmarshal(raw[1], &event); err != nil { | ||
| 268 | status = "error" | ||
| 269 | return fmt.Errorf("invalid event: %w", err) | ||
| 270 | } | ||
| 271 | |||
| 265 | if state.authenticatedPubkey == "" && h.authConfig != nil && h.authConfig.WriteEnabled { | 272 | if state.authenticatedPubkey == "" && h.authConfig != nil && h.authConfig.WriteEnabled { |
| 266 | status = "unauthenticated" | 273 | status = "unauthenticated" |
| 274 | h.sendOK(ctx, conn, event.ID, false, "auth-required: authentication required") | ||
| 267 | return nil | 275 | return nil |
| 268 | } | 276 | } |
| 269 | 277 | ||
| @@ -279,11 +287,7 @@ func (h *Handler) handleEvent(ctx context.Context, conn *websocket.Conn, raw []j | |||
| 279 | } | 287 | } |
| 280 | } | 288 | } |
| 281 | 289 | ||
| 282 | var event nostr.Event | 290 | // Event already parsed above for auth check |
| 283 | if err := json.Unmarshal(raw[1], &event); err != nil { | ||
| 284 | status = "error" | ||
| 285 | return fmt.Errorf("invalid event: %w", err) | ||
| 286 | } | ||
| 287 | 291 | ||
| 288 | if !event.CheckID() { | 292 | if !event.CheckID() { |
| 289 | status = "error" | 293 | status = "error" |
