@arcblock/did-connect-service 4.0.4 → 4.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/fonts/noto-sans-sc-regular.otf +0 -0
- package/dist/embedded.d.ts +32 -0
- package/dist/embedded.d.ts.map +1 -1
- package/dist/embedded.js +3 -0
- package/dist/embedded.js.map +1 -1
- package/dist/handlers/auth-handler.d.ts +5 -0
- package/dist/handlers/auth-handler.d.ts.map +1 -1
- package/dist/handlers/auth-handler.js +33 -0
- package/dist/handlers/auth-handler.js.map +1 -1
- package/dist/handlers/branding-handler.d.ts +17 -0
- package/dist/handlers/branding-handler.d.ts.map +1 -1
- package/dist/handlers/branding-handler.js +107 -5
- package/dist/handlers/branding-handler.js.map +1 -1
- package/dist/identity/csrf.d.ts +17 -0
- package/dist/identity/csrf.d.ts.map +1 -0
- package/dist/identity/csrf.js +56 -0
- package/dist/identity/csrf.js.map +1 -0
- package/dist/og/emoji.d.ts +12 -0
- package/dist/og/emoji.d.ts.map +1 -0
- package/dist/og/emoji.js +71 -0
- package/dist/og/emoji.js.map +1 -0
- package/dist/og/generator.d.ts +3 -0
- package/dist/og/generator.d.ts.map +1 -0
- package/dist/og/generator.js +338 -0
- package/dist/og/generator.js.map +1 -0
- package/dist/og/index.d.ts +6 -0
- package/dist/og/index.d.ts.map +1 -0
- package/dist/og/index.js +4 -0
- package/dist/og/index.js.map +1 -0
- package/dist/og/passport-svg.d.ts +52 -0
- package/dist/og/passport-svg.d.ts.map +1 -0
- package/dist/og/passport-svg.js +157 -0
- package/dist/og/passport-svg.js.map +1 -0
- package/dist/og/ssrf-guard.d.ts +38 -0
- package/dist/og/ssrf-guard.d.ts.map +1 -0
- package/dist/og/ssrf-guard.js +188 -0
- package/dist/og/ssrf-guard.js.map +1 -0
- package/dist/og/templates.d.ts +26 -0
- package/dist/og/templates.d.ts.map +1 -0
- package/dist/og/templates.js +302 -0
- package/dist/og/templates.js.map +1 -0
- package/dist/og/types.d.ts +74 -0
- package/dist/og/types.d.ts.map +1 -0
- package/dist/og/types.js +14 -0
- package/dist/og/types.js.map +1 -0
- package/package.json +18 -4
- package/dist/access-key-handler.d.ts +0 -37
- package/dist/access-key-handler.d.ts.map +0 -1
- package/dist/access-key-handler.js +0 -316
- package/dist/access-key-handler.js.map +0 -1
- package/dist/access-key-util.d.ts +0 -19
- package/dist/access-key-util.d.ts.map +0 -1
- package/dist/access-key-util.js +0 -45
- package/dist/access-key-util.js.map +0 -1
- package/dist/access-policy.d.ts +0 -53
- package/dist/access-policy.d.ts.map +0 -1
- package/dist/access-policy.js +0 -153
- package/dist/access-policy.js.map +0 -1
- package/dist/auth-client.d.ts +0 -20
- package/dist/auth-client.d.ts.map +0 -1
- package/dist/auth-client.js +0 -42
- package/dist/auth-client.js.map +0 -1
- package/dist/auth-entrypoint.d.ts +0 -45
- package/dist/auth-entrypoint.d.ts.map +0 -1
- package/dist/auth-entrypoint.js +0 -31
- package/dist/auth-entrypoint.js.map +0 -1
- package/dist/auth-handler.d.ts +0 -136
- package/dist/auth-handler.d.ts.map +0 -1
- package/dist/auth-handler.js +0 -408
- package/dist/auth-handler.js.map +0 -1
- package/dist/auth-rpc-types.d.ts +0 -139
- package/dist/auth-rpc-types.d.ts.map +0 -1
- package/dist/auth-rpc-types.js +0 -11
- package/dist/auth-rpc-types.js.map +0 -1
- package/dist/auth-rpc.d.ts +0 -80
- package/dist/auth-rpc.d.ts.map +0 -1
- package/dist/auth-rpc.js +0 -257
- package/dist/auth-rpc.js.map +0 -1
- package/dist/auth-worker.d.ts +0 -42
- package/dist/auth-worker.d.ts.map +0 -1
- package/dist/auth-worker.js +0 -120
- package/dist/auth-worker.js.map +0 -1
- package/dist/blocklet-js-handler.d.ts +0 -22
- package/dist/blocklet-js-handler.d.ts.map +0 -1
- package/dist/blocklet-js-handler.js +0 -205
- package/dist/blocklet-js-handler.js.map +0 -1
- package/dist/branding-handler.d.ts +0 -42
- package/dist/branding-handler.d.ts.map +0 -1
- package/dist/branding-handler.js +0 -326
- package/dist/branding-handler.js.map +0 -1
- package/dist/d1-token-storage.d.ts +0 -31
- package/dist/d1-token-storage.d.ts.map +0 -1
- package/dist/d1-token-storage.js +0 -83
- package/dist/d1-token-storage.js.map +0 -1
- package/dist/did-connect-handler.d.ts +0 -57
- package/dist/did-connect-handler.d.ts.map +0 -1
- package/dist/did-connect-handler.js +0 -182
- package/dist/did-connect-handler.js.map +0 -1
- package/dist/did.d.ts +0 -14
- package/dist/did.d.ts.map +0 -1
- package/dist/did.js +0 -17
- package/dist/did.js.map +0 -1
- package/dist/email-login-handler.d.ts +0 -50
- package/dist/email-login-handler.d.ts.map +0 -1
- package/dist/email-login-handler.js +0 -238
- package/dist/email-login-handler.js.map +0 -1
- package/dist/federation-utils.d.ts +0 -23
- package/dist/federation-utils.d.ts.map +0 -1
- package/dist/federation-utils.js +0 -25
- package/dist/federation-utils.js.map +0 -1
- package/dist/handler.d.ts +0 -90
- package/dist/handler.d.ts.map +0 -1
- package/dist/handler.js +0 -591
- package/dist/handler.js.map +0 -1
- package/dist/identity/invitation-util.d.ts +0 -7
- package/dist/identity/invitation-util.d.ts.map +0 -1
- package/dist/identity/invitation-util.js +0 -66
- package/dist/identity/invitation-util.js.map +0 -1
- package/dist/instance-role.d.ts +0 -10
- package/dist/instance-role.d.ts.map +0 -1
- package/dist/instance-role.js +0 -20
- package/dist/instance-role.js.map +0 -1
- package/dist/jwt.d.ts +0 -7
- package/dist/jwt.d.ts.map +0 -1
- package/dist/jwt.js +0 -72
- package/dist/jwt.js.map +0 -1
- package/dist/login-entry.d.ts +0 -9
- package/dist/login-entry.d.ts.map +0 -1
- package/dist/login-entry.js +0 -9
- package/dist/login-entry.js.map +0 -1
- package/dist/membership-handler.d.ts +0 -27
- package/dist/membership-handler.d.ts.map +0 -1
- package/dist/membership-handler.js +0 -111
- package/dist/membership-handler.js.map +0 -1
- package/dist/oauth-callback-page.d.ts +0 -9
- package/dist/oauth-callback-page.d.ts.map +0 -1
- package/dist/oauth-callback-page.js +0 -31
- package/dist/oauth-callback-page.js.map +0 -1
- package/dist/oauth-handler.d.ts +0 -72
- package/dist/oauth-handler.d.ts.map +0 -1
- package/dist/oauth-handler.js +0 -423
- package/dist/oauth-handler.js.map +0 -1
- package/dist/page.d.ts +0 -33
- package/dist/page.d.ts.map +0 -1
- package/dist/page.js +0 -59
- package/dist/page.js.map +0 -1
- package/dist/pages/auth-script.d.ts +0 -18
- package/dist/pages/auth-script.d.ts.map +0 -1
- package/dist/pages/auth-script.js +0 -185
- package/dist/pages/auth-script.js.map +0 -1
- package/dist/pages/design-tokens.d.ts +0 -86
- package/dist/pages/design-tokens.d.ts.map +0 -1
- package/dist/pages/design-tokens.js +0 -159
- package/dist/pages/design-tokens.js.map +0 -1
- package/dist/pages/did-connect-script.d.ts +0 -16
- package/dist/pages/did-connect-script.d.ts.map +0 -1
- package/dist/pages/did-connect-script.js +0 -105
- package/dist/pages/did-connect-script.js.map +0 -1
- package/dist/pages/shared-styles.d.ts +0 -6
- package/dist/pages/shared-styles.d.ts.map +0 -1
- package/dist/pages/shared-styles.js +0 -109
- package/dist/pages/shared-styles.js.map +0 -1
- package/dist/rbac.d.ts +0 -19
- package/dist/rbac.d.ts.map +0 -1
- package/dist/rbac.js +0 -76
- package/dist/rbac.js.map +0 -1
- package/dist/session-context.d.ts +0 -35
- package/dist/session-context.d.ts.map +0 -1
- package/dist/session-context.js +0 -39
- package/dist/session-context.js.map +0 -1
- package/dist/store.d.ts +0 -222
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -1366
- package/dist/store.js.map +0 -1
- package/dist/team-handler.d.ts +0 -90
- package/dist/team-handler.d.ts.map +0 -1
- package/dist/team-handler.js +0 -1225
- package/dist/team-handler.js.map +0 -1
- package/dist/ticket-handler.d.ts +0 -28
- package/dist/ticket-handler.d.ts.map +0 -1
- package/dist/ticket-handler.js +0 -74
- package/dist/ticket-handler.js.map +0 -1
- package/dist/wallet-identity.d.ts +0 -32
- package/dist/wallet-identity.d.ts.map +0 -1
- package/dist/wallet-identity.js +0 -43
- package/dist/wallet-identity.js.map +0 -1
- package/dist/webauthn.d.ts +0 -65
- package/dist/webauthn.d.ts.map +0 -1
- package/dist/webauthn.js +0 -112
- package/dist/webauthn.js.map +0 -1
package/dist/auth-rpc.d.ts
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AuthRPCImpl — Core RPC logic for Auth Worker Service Binding.
|
|
3
|
-
*
|
|
4
|
-
* This class implements all RPC methods using raw values (JWT strings,
|
|
5
|
-
* header strings) instead of Request objects, making it testable without
|
|
6
|
-
* Cloudflare runtime. The actual WorkerEntrypoint subclass (in auth-worker.ts)
|
|
7
|
-
* delegates to this class.
|
|
8
|
-
*/
|
|
9
|
-
import type { AuditLogDTO, CallerIdentityDTO, CreateAuditLogInput, MemberWithUserInfoDTO, RegisterAppConfig, RuleWithPolicyDTO, StoredMembershipDTO, StoredUserDTO } from "./auth-rpc-types.js";
|
|
10
|
-
export declare class AuthRPCImpl {
|
|
11
|
-
private readonly db;
|
|
12
|
-
private readonly jwtSecret;
|
|
13
|
-
private _store?;
|
|
14
|
-
constructor(db: D1Database, jwtSecret: string);
|
|
15
|
-
private store;
|
|
16
|
-
/** Lightweight verify: JWT signature check only, no D1. */
|
|
17
|
-
verify(jwt: string): Promise<CallerIdentityDTO | null>;
|
|
18
|
-
/** Full verify: JWT + DB user existence + approval status. */
|
|
19
|
-
verifyFull(jwt: string): Promise<CallerIdentityDTO | null>;
|
|
20
|
-
/** Resolve identity: Access Key (Bearer) first, then JWT fallback. */
|
|
21
|
-
resolveIdentity(jwt: string | null, authorizationHeader: string | null, instanceDid?: string): Promise<CallerIdentityDTO | null>;
|
|
22
|
-
/** Access policy evaluation — returns serialized decision. */
|
|
23
|
-
enforceAccess(jwt: string | null, authorizationHeader: string | null, pathname: string, instanceDid?: string): Promise<{
|
|
24
|
-
allowed: true;
|
|
25
|
-
caller: CallerIdentityDTO | null;
|
|
26
|
-
} | {
|
|
27
|
-
allowed: false;
|
|
28
|
-
status: 401 | 403;
|
|
29
|
-
}>;
|
|
30
|
-
getMembership(userDid: string, instanceDid: string): Promise<StoredMembershipDTO | null>;
|
|
31
|
-
listMemberships(instanceDid: string): Promise<StoredMembershipDTO[]>;
|
|
32
|
-
listMembershipsWithUserInfo(instanceDid: string): Promise<MemberWithUserInfoDTO[]>;
|
|
33
|
-
createMembership(userDid: string, instanceDid: string, role: string, invitedBy?: string): Promise<void>;
|
|
34
|
-
updateMembershipRole(userDid: string, instanceDid: string, role: string): Promise<void>;
|
|
35
|
-
deleteMembership(userDid: string, instanceDid: string): Promise<void>;
|
|
36
|
-
deleteMembershipsByInstance(instanceDid: string): Promise<void>;
|
|
37
|
-
getSetting(instanceDid: string, key: string): Promise<string | null>;
|
|
38
|
-
setSetting(instanceDid: string, key: string, value: string): Promise<void>;
|
|
39
|
-
listSettings(instanceDid: string): Promise<{
|
|
40
|
-
key: string;
|
|
41
|
-
value: string | null;
|
|
42
|
-
updated_at: string;
|
|
43
|
-
}[]>;
|
|
44
|
-
deleteSetting(instanceDid: string, key: string): Promise<void>;
|
|
45
|
-
getAuditLogsForInstance(instanceDid: string, opts: {
|
|
46
|
-
page: number;
|
|
47
|
-
pageSize: number;
|
|
48
|
-
action?: string;
|
|
49
|
-
}): Promise<{
|
|
50
|
-
logs: AuditLogDTO[];
|
|
51
|
-
total: number;
|
|
52
|
-
}>;
|
|
53
|
-
getAuditLogById(id: number, instanceDid: string): Promise<AuditLogDTO | null>;
|
|
54
|
-
createAuditLog(input: CreateAuditLogInput): Promise<void>;
|
|
55
|
-
getActiveRulesForInstance(instanceDid: string): Promise<RuleWithPolicyDTO[]>;
|
|
56
|
-
seedInstanceDefaults(instanceDid: string): Promise<void>;
|
|
57
|
-
getUserByDid(did: string): Promise<StoredUserDTO | null>;
|
|
58
|
-
createUser(params: {
|
|
59
|
-
did: string;
|
|
60
|
-
pk: string;
|
|
61
|
-
fullName?: string;
|
|
62
|
-
email?: string;
|
|
63
|
-
avatar?: string;
|
|
64
|
-
sourceProvider: string;
|
|
65
|
-
ip?: string;
|
|
66
|
-
domain?: string;
|
|
67
|
-
}): Promise<void>;
|
|
68
|
-
updateLastLogin(did: string, ip?: string, domain?: string): Promise<void>;
|
|
69
|
-
saveChallenge(id: string, challenge: string, invitationId?: string): Promise<void>;
|
|
70
|
-
getChallenge(id: string): Promise<{
|
|
71
|
-
challenge: string;
|
|
72
|
-
invitationId: string | null;
|
|
73
|
-
} | null>;
|
|
74
|
-
deleteChallenge(id: string): Promise<void>;
|
|
75
|
-
registerApp(config: RegisterAppConfig): Promise<{
|
|
76
|
-
instanceDid: string;
|
|
77
|
-
}>;
|
|
78
|
-
private resolveAccessKey;
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=auth-rpc.d.ts.map
|
package/dist/auth-rpc.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-rpc.d.ts","sourceRoot":"","sources":["../src/auth-rpc.ts"],"names":[],"mappings":"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"}
|
package/dist/auth-rpc.js
DELETED
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AuthRPCImpl — Core RPC logic for Auth Worker Service Binding.
|
|
3
|
-
*
|
|
4
|
-
* This class implements all RPC methods using raw values (JWT strings,
|
|
5
|
-
* header strings) instead of Request objects, making it testable without
|
|
6
|
-
* Cloudflare runtime. The actual WorkerEntrypoint subclass (in auth-worker.ts)
|
|
7
|
-
* delegates to this class.
|
|
8
|
-
*/
|
|
9
|
-
import { deriveAccessKeyId, isAccessKeyToken, } from "./access/access-key-util.js";
|
|
10
|
-
import { evaluateAccess } from "./access/access-policy.js";
|
|
11
|
-
import { invalidateConfigCache } from "./auth-worker.js";
|
|
12
|
-
import { verifyJWT } from "./identity/jwt.js";
|
|
13
|
-
import { D1Store } from "./store/d1-store.js";
|
|
14
|
-
export class AuthRPCImpl {
|
|
15
|
-
db;
|
|
16
|
-
jwtSecret;
|
|
17
|
-
_store;
|
|
18
|
-
constructor(db, jwtSecret) {
|
|
19
|
-
this.db = db;
|
|
20
|
-
this.jwtSecret = jwtSecret;
|
|
21
|
-
}
|
|
22
|
-
store() {
|
|
23
|
-
this._store ??= new D1Store(this.db);
|
|
24
|
-
return this._store;
|
|
25
|
-
}
|
|
26
|
-
// ── Layer 1: Auth Core ─────────────────────────────────────────────
|
|
27
|
-
/** Lightweight verify: JWT signature check only, no D1. */
|
|
28
|
-
async verify(jwt) {
|
|
29
|
-
const payload = await verifyJWT(jwt, this.jwtSecret);
|
|
30
|
-
if (!payload?.did || !payload.pk)
|
|
31
|
-
return null;
|
|
32
|
-
return {
|
|
33
|
-
did: payload.did,
|
|
34
|
-
pk: payload.pk,
|
|
35
|
-
displayName: payload.displayName,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/** Full verify: JWT + DB user existence + approval status. */
|
|
39
|
-
async verifyFull(jwt) {
|
|
40
|
-
const caller = await this.verify(jwt);
|
|
41
|
-
if (!caller)
|
|
42
|
-
return null;
|
|
43
|
-
const user = await this.store().getUserByDid(caller.did);
|
|
44
|
-
if (!user?.approved)
|
|
45
|
-
return null;
|
|
46
|
-
return {
|
|
47
|
-
...caller,
|
|
48
|
-
displayName: user.fullName ?? caller.displayName,
|
|
49
|
-
role: user.role ?? "guest",
|
|
50
|
-
avatar: `/.well-known/service/avatar/${caller.did}`,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
/** Resolve identity: Access Key (Bearer) first, then JWT fallback. */
|
|
54
|
-
async resolveIdentity(jwt, authorizationHeader, instanceDid) {
|
|
55
|
-
// 1. Try access key auth
|
|
56
|
-
if (authorizationHeader) {
|
|
57
|
-
const akCaller = await this.resolveAccessKey(authorizationHeader, instanceDid);
|
|
58
|
-
if (akCaller)
|
|
59
|
-
return akCaller;
|
|
60
|
-
}
|
|
61
|
-
// 2. Fall back to JWT
|
|
62
|
-
if (!jwt)
|
|
63
|
-
return null;
|
|
64
|
-
const jwtCaller = await this.verify(jwt);
|
|
65
|
-
if (!jwtCaller)
|
|
66
|
-
return null;
|
|
67
|
-
const user = await this.store().getUserByDid(jwtCaller.did);
|
|
68
|
-
if (user) {
|
|
69
|
-
return {
|
|
70
|
-
...jwtCaller,
|
|
71
|
-
role: user.role ?? "guest",
|
|
72
|
-
avatar: `/.well-known/service/avatar/${jwtCaller.did}`,
|
|
73
|
-
authMethod: "passkey",
|
|
74
|
-
approved: !!user.approved,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
return { ...jwtCaller, authMethod: "passkey" };
|
|
78
|
-
}
|
|
79
|
-
/** Access policy evaluation — returns serialized decision. */
|
|
80
|
-
async enforceAccess(jwt, authorizationHeader, pathname, instanceDid) {
|
|
81
|
-
// 1. Resolve caller identity
|
|
82
|
-
let callerIdentity = null;
|
|
83
|
-
let role = null;
|
|
84
|
-
let blocked = false;
|
|
85
|
-
if (authorizationHeader) {
|
|
86
|
-
const akCaller = await this.resolveAccessKey(authorizationHeader, instanceDid);
|
|
87
|
-
if (akCaller) {
|
|
88
|
-
callerIdentity = akCaller;
|
|
89
|
-
role = akCaller.role ?? null;
|
|
90
|
-
blocked = akCaller.approved === false;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
if (!callerIdentity && jwt) {
|
|
94
|
-
const jwtCaller = await this.verify(jwt);
|
|
95
|
-
if (jwtCaller) {
|
|
96
|
-
callerIdentity = jwtCaller;
|
|
97
|
-
const user = await this.store().getUserByDid(jwtCaller.did);
|
|
98
|
-
if (user) {
|
|
99
|
-
role = user.role ?? "guest";
|
|
100
|
-
blocked = !user.approved;
|
|
101
|
-
callerIdentity = { ...jwtCaller, role: role };
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// 2. Load rules and evaluate
|
|
106
|
-
const rules = instanceDid
|
|
107
|
-
? await this.store().getActiveRulesForInstance(instanceDid)
|
|
108
|
-
: await this.store().getActiveRulesWithPolicies();
|
|
109
|
-
const result = evaluateAccess(rules, pathname, role ? { role } : null);
|
|
110
|
-
// 3. Public routes: allow everyone, even blocked users
|
|
111
|
-
if (result.allowed) {
|
|
112
|
-
if (blocked) {
|
|
113
|
-
const publicCheck = evaluateAccess(rules, pathname, null);
|
|
114
|
-
if (!publicCheck.allowed) {
|
|
115
|
-
return { allowed: false, status: 403 };
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
const caller = callerIdentity && !blocked
|
|
119
|
-
? { ...callerIdentity, role: (role ?? undefined) }
|
|
120
|
-
: null;
|
|
121
|
-
return { allowed: true, caller };
|
|
122
|
-
}
|
|
123
|
-
// 4. Access denied
|
|
124
|
-
if (result.reason === "unauthenticated") {
|
|
125
|
-
return { allowed: false, status: 401 };
|
|
126
|
-
}
|
|
127
|
-
return { allowed: false, status: 403 };
|
|
128
|
-
}
|
|
129
|
-
// ── Layer 2: Data RPC ──────────────────────────────────────────────
|
|
130
|
-
async getMembership(userDid, instanceDid) {
|
|
131
|
-
return this.store().getMembership(userDid, instanceDid);
|
|
132
|
-
}
|
|
133
|
-
async listMemberships(instanceDid) {
|
|
134
|
-
return this.store().listMemberships(instanceDid);
|
|
135
|
-
}
|
|
136
|
-
async listMembershipsWithUserInfo(instanceDid) {
|
|
137
|
-
return this.store().listMembershipsWithUserInfo(instanceDid);
|
|
138
|
-
}
|
|
139
|
-
async createMembership(userDid, instanceDid, role, invitedBy) {
|
|
140
|
-
await this.store().createMembership(userDid, instanceDid, role, invitedBy);
|
|
141
|
-
}
|
|
142
|
-
async updateMembershipRole(userDid, instanceDid, role) {
|
|
143
|
-
await this.store().updateMembershipRole(userDid, instanceDid, role);
|
|
144
|
-
}
|
|
145
|
-
async deleteMembership(userDid, instanceDid) {
|
|
146
|
-
await this.store().deleteMembership(userDid, instanceDid);
|
|
147
|
-
}
|
|
148
|
-
async deleteMembershipsByInstance(instanceDid) {
|
|
149
|
-
await this.store().deleteMembershipsByInstance(instanceDid);
|
|
150
|
-
}
|
|
151
|
-
async getSetting(instanceDid, key) {
|
|
152
|
-
return this.store().getSetting(instanceDid, key);
|
|
153
|
-
}
|
|
154
|
-
async setSetting(instanceDid, key, value) {
|
|
155
|
-
await this.store().setSetting(instanceDid, key, value);
|
|
156
|
-
}
|
|
157
|
-
async listSettings(instanceDid) {
|
|
158
|
-
return this.store().listSettings(instanceDid);
|
|
159
|
-
}
|
|
160
|
-
async deleteSetting(instanceDid, key) {
|
|
161
|
-
await this.store().deleteSetting(instanceDid, key);
|
|
162
|
-
}
|
|
163
|
-
async getAuditLogsForInstance(instanceDid, opts) {
|
|
164
|
-
return this.store().getAuditLogsForInstance(instanceDid, opts);
|
|
165
|
-
}
|
|
166
|
-
async getAuditLogById(id, instanceDid) {
|
|
167
|
-
return this.store().getAuditLogById(id, instanceDid);
|
|
168
|
-
}
|
|
169
|
-
async createAuditLog(input) {
|
|
170
|
-
await this.store().createAuditLog(input);
|
|
171
|
-
}
|
|
172
|
-
async getActiveRulesForInstance(instanceDid) {
|
|
173
|
-
return this.store().getActiveRulesForInstance(instanceDid);
|
|
174
|
-
}
|
|
175
|
-
async seedInstanceDefaults(instanceDid) {
|
|
176
|
-
await this.store().seedInstanceDefaults(instanceDid);
|
|
177
|
-
}
|
|
178
|
-
// ── Layer 3: Lifecycle RPC ─────────────────────────────────────────
|
|
179
|
-
async getUserByDid(did) {
|
|
180
|
-
const user = await this.store().getUserByDid(did);
|
|
181
|
-
if (!user)
|
|
182
|
-
return null;
|
|
183
|
-
return {
|
|
184
|
-
did: user.did,
|
|
185
|
-
pk: user.pk,
|
|
186
|
-
fullName: user.fullName ?? undefined,
|
|
187
|
-
email: user.email ?? undefined,
|
|
188
|
-
avatar: user.avatar ?? undefined,
|
|
189
|
-
role: user.role ?? undefined,
|
|
190
|
-
approved: user.approved,
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
async createUser(params) {
|
|
194
|
-
await this.store().createUser(params);
|
|
195
|
-
}
|
|
196
|
-
async updateLastLogin(did, ip, domain) {
|
|
197
|
-
await this.store().updateLastLogin(did, ip, domain);
|
|
198
|
-
}
|
|
199
|
-
async saveChallenge(id, challenge, invitationId) {
|
|
200
|
-
await this.store().saveChallenge(id, challenge, invitationId);
|
|
201
|
-
}
|
|
202
|
-
async getChallenge(id) {
|
|
203
|
-
return this.store().getChallenge(id);
|
|
204
|
-
}
|
|
205
|
-
async deleteChallenge(id) {
|
|
206
|
-
await this.store().deleteChallenge(id);
|
|
207
|
-
}
|
|
208
|
-
async registerApp(config) {
|
|
209
|
-
const { instanceDid, appSk, appPsk, appName } = config;
|
|
210
|
-
const s = this.store();
|
|
211
|
-
// Use store.setSetting for each key — consistent with D1 schema constraints
|
|
212
|
-
await s.setSetting(instanceDid, "app:sk", appSk);
|
|
213
|
-
if (appPsk)
|
|
214
|
-
await s.setSetting(instanceDid, "app:psk", appPsk);
|
|
215
|
-
if (appName)
|
|
216
|
-
await s.setSetting(instanceDid, "app:name", appName);
|
|
217
|
-
// Invalidate config cache so next request picks up the new keys
|
|
218
|
-
invalidateConfigCache(instanceDid);
|
|
219
|
-
// Seed instance defaults (idempotent)
|
|
220
|
-
await s.seedInstanceDefaults(instanceDid);
|
|
221
|
-
return { instanceDid };
|
|
222
|
-
}
|
|
223
|
-
// ── Internal helpers ───────────────────────────────────────────────
|
|
224
|
-
async resolveAccessKey(authorizationHeader, instanceDid) {
|
|
225
|
-
const token = authorizationHeader.replace(/^Bearer\s+/i, "").trim();
|
|
226
|
-
if (!isAccessKeyToken(token))
|
|
227
|
-
return null;
|
|
228
|
-
const accessKeyId = deriveAccessKeyId(token);
|
|
229
|
-
if (!accessKeyId)
|
|
230
|
-
return null;
|
|
231
|
-
const key = await this.store().getAccessKeyById(accessKeyId);
|
|
232
|
-
if (!key)
|
|
233
|
-
return null;
|
|
234
|
-
// Check expiration
|
|
235
|
-
if (key.expireAt && new Date(key.expireAt) < new Date())
|
|
236
|
-
return null;
|
|
237
|
-
// Instance ownership check
|
|
238
|
-
if (instanceDid && key.instanceDid && key.instanceDid !== instanceDid)
|
|
239
|
-
return null;
|
|
240
|
-
// Check creator
|
|
241
|
-
const creator = await this.store().getUserByDid(key.createdBy);
|
|
242
|
-
if (!creator)
|
|
243
|
-
return null;
|
|
244
|
-
// Fire-and-forget: update lastUsedAt
|
|
245
|
-
this.store().refreshAccessKeyLastUsed(accessKeyId).catch(() => { });
|
|
246
|
-
return {
|
|
247
|
-
did: creator.did,
|
|
248
|
-
pk: creator.pk,
|
|
249
|
-
displayName: creator.fullName ?? undefined,
|
|
250
|
-
role: key.role,
|
|
251
|
-
authMethod: "access-key",
|
|
252
|
-
accessKeyId,
|
|
253
|
-
approved: !!creator.approved,
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
//# sourceMappingURL=auth-rpc.js.map
|
package/dist/auth-rpc.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-rpc.js","sourceRoot":"","sources":["../src/auth-rpc.ts"],"names":[],"mappings":"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"}
|
package/dist/auth-worker.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auth Worker — Independent Worker entry point for Service Binding mode.
|
|
3
|
-
*
|
|
4
|
-
* Exposes two integration surfaces:
|
|
5
|
-
* 1. `fetch()` — Consumer forwards /.well-known/service/* requests here
|
|
6
|
-
* 2. `AuthRPC` — Consumer calls RPC methods (verify, enforceAccess, etc.)
|
|
7
|
-
*
|
|
8
|
-
* Supports two modes:
|
|
9
|
-
* - Single-tenant: env.APP_SK set → used directly (playground/dev)
|
|
10
|
-
* - Multi-tenant: X-Instance-Did header → load appSk/appPsk from D1 settings
|
|
11
|
-
*/
|
|
12
|
-
import { type AuthHandler } from "./handlers/auth-handler.js";
|
|
13
|
-
export interface AuthWorkerEnv {
|
|
14
|
-
BLOCKLET_SERVICE_DB: D1Database;
|
|
15
|
-
JWT_SECRET: string;
|
|
16
|
-
/** Optional R2 binding for avatar/logo storage. */
|
|
17
|
-
AVATAR_BUCKET?: R2Bucket;
|
|
18
|
-
/** Single-tenant mode: app secret key from env. */
|
|
19
|
-
APP_SK?: string;
|
|
20
|
-
/** Single-tenant mode: permanent secret key from env. */
|
|
21
|
-
APP_PSK?: string;
|
|
22
|
-
/** Relying Party name for WebAuthn. */
|
|
23
|
-
RP_NAME?: string;
|
|
24
|
-
/** Optional email login configuration. */
|
|
25
|
-
RESEND_API_KEY?: string;
|
|
26
|
-
EMAIL_FROM?: string;
|
|
27
|
-
}
|
|
28
|
-
/** Clear cached config for an instance (called after registerApp). */
|
|
29
|
-
export declare function invalidateConfigCache(instanceDid: string): void;
|
|
30
|
-
/** Reset all caches — for testing only. */
|
|
31
|
-
export declare function _resetConfigCacheForTesting(): void;
|
|
32
|
-
/**
|
|
33
|
-
* Build an AuthHandler for the given mode:
|
|
34
|
-
* - Single-tenant: env.APP_SK → use directly
|
|
35
|
-
* - Multi-tenant: instanceDid → load from D1 settings
|
|
36
|
-
*/
|
|
37
|
-
export declare function buildHandler(instanceDid: string | undefined, env: AuthWorkerEnv): Promise<AuthHandler>;
|
|
38
|
-
declare const _default: {
|
|
39
|
-
fetch(request: Request, env: AuthWorkerEnv): Promise<Response>;
|
|
40
|
-
};
|
|
41
|
-
export default _default;
|
|
42
|
-
//# sourceMappingURL=auth-worker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-worker.d.ts","sourceRoot":"","sources":["../src/auth-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,4BAA4B,CAAC;AAKjF,MAAM,WAAW,aAAa;IAC5B,mBAAmB,EAAE,UAAU,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAyBD,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAE/D;AAED,2CAA2C;AAC3C,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAID;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,WAAW,CAAC,CA8BtB;;mBAmCsB,OAAO,OAAO,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;;AADtE,wBAiBE"}
|
package/dist/auth-worker.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auth Worker — Independent Worker entry point for Service Binding mode.
|
|
3
|
-
*
|
|
4
|
-
* Exposes two integration surfaces:
|
|
5
|
-
* 1. `fetch()` — Consumer forwards /.well-known/service/* requests here
|
|
6
|
-
* 2. `AuthRPC` — Consumer calls RPC methods (verify, enforceAccess, etc.)
|
|
7
|
-
*
|
|
8
|
-
* Supports two modes:
|
|
9
|
-
* - Single-tenant: env.APP_SK set → used directly (playground/dev)
|
|
10
|
-
* - Multi-tenant: X-Instance-Did header → load appSk/appPsk from D1 settings
|
|
11
|
-
*/
|
|
12
|
-
import { createAuthHandler } from "./handlers/auth-handler.js";
|
|
13
|
-
import { D1Store } from "./store/d1-store.js";
|
|
14
|
-
const _configCache = new Map();
|
|
15
|
-
const CONFIG_TTL = 5 * 60 * 1000; // 5 minutes
|
|
16
|
-
async function resolveConfig(instanceDid, store) {
|
|
17
|
-
const cached = _configCache.get(instanceDid);
|
|
18
|
-
if (cached && Date.now() - cached.at < CONFIG_TTL)
|
|
19
|
-
return cached.config;
|
|
20
|
-
const appSk = await store.getSetting(instanceDid, "app:sk");
|
|
21
|
-
if (!appSk)
|
|
22
|
-
throw new Error(`No appSk configured for instance: ${instanceDid}`);
|
|
23
|
-
const appPsk = (await store.getSetting(instanceDid, "app:psk")) ?? undefined;
|
|
24
|
-
const config = { appSk, appPsk };
|
|
25
|
-
_configCache.set(instanceDid, { config, at: Date.now() });
|
|
26
|
-
return config;
|
|
27
|
-
}
|
|
28
|
-
/** Clear cached config for an instance (called after registerApp). */
|
|
29
|
-
export function invalidateConfigCache(instanceDid) {
|
|
30
|
-
_configCache.delete(instanceDid);
|
|
31
|
-
}
|
|
32
|
-
/** Reset all caches — for testing only. */
|
|
33
|
-
export function _resetConfigCacheForTesting() {
|
|
34
|
-
_configCache.clear();
|
|
35
|
-
}
|
|
36
|
-
// ─── buildHandler ──────────────────────────────────────────────────────
|
|
37
|
-
/**
|
|
38
|
-
* Build an AuthHandler for the given mode:
|
|
39
|
-
* - Single-tenant: env.APP_SK → use directly
|
|
40
|
-
* - Multi-tenant: instanceDid → load from D1 settings
|
|
41
|
-
*/
|
|
42
|
-
export async function buildHandler(instanceDid, env) {
|
|
43
|
-
const store = new D1Store(env.BLOCKLET_SERVICE_DB);
|
|
44
|
-
// Single-tenant fast path: APP_SK in env
|
|
45
|
-
if (env.APP_SK) {
|
|
46
|
-
return createAuthHandler({
|
|
47
|
-
db: env.BLOCKLET_SERVICE_DB,
|
|
48
|
-
jwtSecret: env.JWT_SECRET,
|
|
49
|
-
rpName: env.RP_NAME ?? "DID Connect",
|
|
50
|
-
appSk: env.APP_SK,
|
|
51
|
-
appPsk: env.APP_PSK,
|
|
52
|
-
r2: env.AVATAR_BUCKET,
|
|
53
|
-
resendApiKey: env.RESEND_API_KEY,
|
|
54
|
-
emailFrom: env.EMAIL_FROM,
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
// Multi-tenant: instanceDid required
|
|
58
|
-
if (!instanceDid)
|
|
59
|
-
throw new Error("Missing X-Instance-Did header (multi-tenant mode)");
|
|
60
|
-
const { appSk, appPsk } = await resolveConfig(instanceDid, store);
|
|
61
|
-
return createAuthHandler({
|
|
62
|
-
db: env.BLOCKLET_SERVICE_DB,
|
|
63
|
-
jwtSecret: env.JWT_SECRET,
|
|
64
|
-
rpName: env.RP_NAME ?? "DID Connect",
|
|
65
|
-
appSk,
|
|
66
|
-
appPsk,
|
|
67
|
-
r2: env.AVATAR_BUCKET,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
// ─── AuthRPC (WorkerEntrypoint wrapper) ────────────────────────────────
|
|
71
|
-
//
|
|
72
|
-
// For real Cloudflare deployment, create a thin wrapper:
|
|
73
|
-
//
|
|
74
|
-
// import { WorkerEntrypoint } from 'cloudflare:workers';
|
|
75
|
-
// import { AuthRPCImpl } from './auth-rpc.js';
|
|
76
|
-
//
|
|
77
|
-
// export class AuthRPC extends WorkerEntrypoint<AuthWorkerEnv> {
|
|
78
|
-
// private _impl?: AuthRPCImpl;
|
|
79
|
-
// private impl() {
|
|
80
|
-
// this._impl ??= new AuthRPCImpl(this.env.BLOCKLET_SERVICE_DB, this.env.JWT_SECRET);
|
|
81
|
-
// return this._impl;
|
|
82
|
-
// }
|
|
83
|
-
// verify(jwt: string) { return this.impl().verify(jwt); }
|
|
84
|
-
// verifyFull(jwt: string) { return this.impl().verifyFull(jwt); }
|
|
85
|
-
// resolveIdentity(...args: Parameters<AuthRPCImpl['resolveIdentity']>) {
|
|
86
|
-
// return this.impl().resolveIdentity(...args);
|
|
87
|
-
// }
|
|
88
|
-
// enforceAccess(...args: Parameters<AuthRPCImpl['enforceAccess']>) {
|
|
89
|
-
// return this.impl().enforceAccess(...args);
|
|
90
|
-
// }
|
|
91
|
-
// // Delegate all other AuthRPCInterface methods to this.impl()
|
|
92
|
-
// }
|
|
93
|
-
//
|
|
94
|
-
// Consumer wrangler.toml:
|
|
95
|
-
// [[services]]
|
|
96
|
-
// binding = "AUTH"
|
|
97
|
-
// service = "did-connect-auth"
|
|
98
|
-
// entrypoint = "AuthRPC"
|
|
99
|
-
// ─── Default fetch handler ─────────────────────────────────────────────
|
|
100
|
-
export default {
|
|
101
|
-
async fetch(request, env) {
|
|
102
|
-
try {
|
|
103
|
-
const instanceDid = request.headers.get("X-Instance-Did") ?? undefined;
|
|
104
|
-
const auth = await buildHandler(instanceDid, env);
|
|
105
|
-
const r = await auth.route(request, { instanceDid });
|
|
106
|
-
if (r)
|
|
107
|
-
return r;
|
|
108
|
-
return new Response("Not Found", { status: 404 });
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
const msg = err instanceof Error ? err.message : "Internal error";
|
|
112
|
-
const status = msg.includes("Missing X-Instance-Did") ? 400 : 500;
|
|
113
|
-
return new Response(JSON.stringify({ error: msg }), {
|
|
114
|
-
status,
|
|
115
|
-
headers: { "Content-Type": "application/json" },
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
};
|
|
120
|
-
//# sourceMappingURL=auth-worker.js.map
|
package/dist/auth-worker.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-worker.js","sourceRoot":"","sources":["../src/auth-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { D1Store } from "./store/d1-store.js";
|
|
2
|
-
export interface BlockletJsOptions {
|
|
3
|
-
store: D1Store;
|
|
4
|
-
appSk: string;
|
|
5
|
-
/** Explicit app DID — otherwise derived from appSk */
|
|
6
|
-
appDid?: string;
|
|
7
|
-
/** Permanent secret key (PSK) — for correct appPid when SK has been rotated */
|
|
8
|
-
appPsk?: string;
|
|
9
|
-
/** Instance DID for settings scope (defaults to '_global_') */
|
|
10
|
-
instanceDid?: string;
|
|
11
|
-
serverVersion?: string;
|
|
12
|
-
}
|
|
13
|
-
export declare class BlockletJsHandler {
|
|
14
|
-
private options;
|
|
15
|
-
private appDid;
|
|
16
|
-
private appPid;
|
|
17
|
-
private appPk;
|
|
18
|
-
constructor(options: BlockletJsOptions);
|
|
19
|
-
fetch(request: Request): Promise<Response | null>;
|
|
20
|
-
private buildBlockletData;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=blocklet-js-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blocklet-js-handler.d.ts","sourceRoot":"","sources":["../src/blocklet-js-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAInD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,iBAAiB;IAKhB,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEF,OAAO,EAAE,iBAAiB;IAOxC,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YA4BzC,iBAAiB;CAkLhC"}
|