Add shared NIP-07 permission gate

This commit is contained in:
thePR0M3TH3AN committed 2026-01-28 13:57:40 -05:00
1 parent 16f4b6b9fa
commit cf9082b83f
10 files changed
+185 -67

No files matched your search

+29 -22
View File
@@ -1,6 +1,7 @@
// js/subscriptions.js
import {
getActiveSigner,
hasDefaultExtensionPermissions,
nostrClient,
requestDefaultExtensionPermissions,
} from "./nostrClientFacade.js";
@@ -750,16 +751,19 @@ class SubscriptionsManager {
(!signerHasNip04 && !windowHasNip04 && requiresNip04)
) {
try {
const permissionResult = await requestDefaultExtensionPermissions();
if (!permissionResult?.ok) {
const error =
permissionResult?.error instanceof Error
? permissionResult.error
: new Error(
"Extension permissions denied while decrypting subscriptions."
);
error.code = "nostr-permission-denied";
return { ok: false, error };
const hasCachedPermissions = hasDefaultExtensionPermissions();
if (!hasCachedPermissions) {
const permissionResult = await requestDefaultExtensionPermissions();
if (!permissionResult?.ok) {
const error =
permissionResult?.error instanceof Error
? permissionResult.error
: new Error(
"Extension permissions denied while decrypting subscriptions."
);
error.code = "nostr-permission-denied";
return { ok: false, error };
}
}
} catch (error) {
const wrapped = error instanceof Error ? error : new Error(String(error));
@@ -979,18 +983,21 @@ class SubscriptionsManager {
}
if (signer.type === "extension") {
const permissionResult = await requestDefaultExtensionPermissions();
if (!permissionResult.ok) {
userLogger.warn(
"[SubscriptionsManager] Signer permissions denied while updating subscriptions.",
permissionResult.error,
);
const error = new Error(
"The active signer must allow encryption and signing before updating subscriptions.",
);
error.code = "extension-permission-denied";
error.cause = permissionResult.error;
throw error;
const hasCachedPermissions = hasDefaultExtensionPermissions();
if (!hasCachedPermissions) {
const permissionResult = await requestDefaultExtensionPermissions();
if (!permissionResult.ok) {
userLogger.warn(
"[SubscriptionsManager] Signer permissions denied while updating subscriptions.",
permissionResult.error,
);
const error = new Error(
"The active signer must allow encryption and signing before updating subscriptions.",
);
error.code = "extension-permission-denied";
error.cause = permissionResult.error;
throw error;
}
}
}