nip46: AuthorizeSigning returns an error for better debuggability.

This commit is contained in:
fiatjaf
2025-07-28 17:31:13 -03:00
parent 9a15d220b0
commit a4d8491d2d

View File

@@ -35,7 +35,7 @@ type DynamicSigner struct {
GetUserKeyer func(ctx context.Context, handlerPubkey nostr.PubKey) (context.Context, nostr.Keyer, error)
// this is called on every sign_event call, if it is nil it will be assumed that everything is authorized
AuthorizeSigning func(ctx context.Context, event nostr.Event, from nostr.PubKey) bool
AuthorizeSigning func(ctx context.Context, event nostr.Event, from nostr.PubKey) error
// this is called on every encrypt or decrypt calls, if it is nil it will be assumed that everything is authorized
AuthorizeEncryption func(ctx context.Context, from nostr.PubKey) bool
@@ -143,10 +143,12 @@ func (p *DynamicSigner) HandleRequest(ctx context.Context, event nostr.Event) (
resultErr = fmt.Errorf("failed to decode event/2: %w", err)
break
}
if p.AuthorizeSigning != nil && !p.AuthorizeSigning(ctx, evt, event.PubKey) {
resultErr = fmt.Errorf("refusing to sign this event")
if p.AuthorizeSigning != nil {
if err := p.AuthorizeSigning(ctx, evt, event.PubKey); err != nil {
resultErr = fmt.Errorf("refusing to sign: %s", err)
break
}
}
err = userKeyer.SignEvent(ctx, &evt)
if err != nil {