@originals/auth 1.8.0 → 1.8.2
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/package.json +15 -12
- package/.turbo/turbo-build.log +0 -1
- package/dist/client/index.d.ts +0 -23
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js +0 -23
- package/dist/client/index.js.map +0 -1
- package/dist/client/server-auth.d.ts +0 -61
- package/dist/client/server-auth.d.ts.map +0 -1
- package/dist/client/server-auth.js +0 -77
- package/dist/client/server-auth.js.map +0 -1
- package/dist/client/turnkey-client.d.ts +0 -59
- package/dist/client/turnkey-client.d.ts.map +0 -1
- package/dist/client/turnkey-client.js +0 -279
- package/dist/client/turnkey-client.js.map +0 -1
- package/dist/client/turnkey-did-signer.d.ts +0 -58
- package/dist/client/turnkey-did-signer.d.ts.map +0 -1
- package/dist/client/turnkey-did-signer.js +0 -131
- package/dist/client/turnkey-did-signer.js.map +0 -1
- package/dist/index.d.ts +0 -23
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -27
- package/dist/index.js.map +0 -1
- package/dist/server/email-auth.d.ts +0 -42
- package/dist/server/email-auth.d.ts.map +0 -1
- package/dist/server/email-auth.js +0 -187
- package/dist/server/email-auth.js.map +0 -1
- package/dist/server/index.d.ts +0 -22
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -22
- package/dist/server/index.js.map +0 -1
- package/dist/server/jwt.d.ts +0 -49
- package/dist/server/jwt.d.ts.map +0 -1
- package/dist/server/jwt.js +0 -113
- package/dist/server/jwt.js.map +0 -1
- package/dist/server/middleware.d.ts +0 -39
- package/dist/server/middleware.d.ts.map +0 -1
- package/dist/server/middleware.js +0 -112
- package/dist/server/middleware.js.map +0 -1
- package/dist/server/turnkey-client.d.ts +0 -24
- package/dist/server/turnkey-client.d.ts.map +0 -1
- package/dist/server/turnkey-client.js +0 -118
- package/dist/server/turnkey-client.js.map +0 -1
- package/dist/server/turnkey-signer.d.ts +0 -40
- package/dist/server/turnkey-signer.d.ts.map +0 -1
- package/dist/server/turnkey-signer.js +0 -121
- package/dist/server/turnkey-signer.js.map +0 -1
- package/dist/types.d.ts +0 -155
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
- package/eslint.config.js +0 -32
- package/tests/index.test.ts +0 -29
- package/tests/server-auth.test.ts +0 -167
- package/tsconfig.json +0 -32
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Turnkey DID Signer Adapter
|
|
3
|
-
* Adapts Turnkey signing to work with didwebvh-ts signer interface
|
|
4
|
-
* Uses @turnkey/sdk-server for all Turnkey operations (no viem/ethers dependency)
|
|
5
|
-
*/
|
|
6
|
-
import { Turnkey } from '@turnkey/sdk-server';
|
|
7
|
-
import type { TurnkeyWalletAccount } from '../types';
|
|
8
|
-
interface SigningInput {
|
|
9
|
-
document: Record<string, unknown>;
|
|
10
|
-
proof: Record<string, unknown>;
|
|
11
|
-
}
|
|
12
|
-
interface SigningOutput {
|
|
13
|
-
proofValue: string;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Signer that uses Turnkey for signing DID documents
|
|
17
|
-
* Compatible with didwebvh-ts signer interface
|
|
18
|
-
*/
|
|
19
|
-
export declare class TurnkeyDIDSigner {
|
|
20
|
-
private turnkeyClient;
|
|
21
|
-
private signWith;
|
|
22
|
-
private subOrgId;
|
|
23
|
-
private publicKeyMultibase;
|
|
24
|
-
private onExpired?;
|
|
25
|
-
constructor(turnkeyClient: Turnkey, signWith: string, subOrgId: string, publicKeyMultibase: string, onExpired?: () => void);
|
|
26
|
-
/**
|
|
27
|
-
* Sign the document and proof using Turnkey
|
|
28
|
-
*/
|
|
29
|
-
sign(input: SigningInput): Promise<SigningOutput>;
|
|
30
|
-
/**
|
|
31
|
-
* Get the verification method ID for this signer
|
|
32
|
-
*/
|
|
33
|
-
getVerificationMethodId(): string;
|
|
34
|
-
/**
|
|
35
|
-
* Verify a signature
|
|
36
|
-
*/
|
|
37
|
-
verify(signature: Uint8Array, message: Uint8Array, publicKey: Uint8Array): Promise<boolean>;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Create a DID:WebVH using OriginalsSDK.createDIDOriginal() with Turnkey signing
|
|
41
|
-
*/
|
|
42
|
-
export declare function createDIDWithTurnkey(params: {
|
|
43
|
-
turnkeyClient: Turnkey;
|
|
44
|
-
updateKeyAccount: TurnkeyWalletAccount;
|
|
45
|
-
subOrgId: string;
|
|
46
|
-
authKeyPublic: string;
|
|
47
|
-
assertionKeyPublic: string;
|
|
48
|
-
updateKeyPublic: string;
|
|
49
|
-
domain: string;
|
|
50
|
-
slug: string;
|
|
51
|
-
onExpired?: () => void;
|
|
52
|
-
}): Promise<{
|
|
53
|
-
did: string;
|
|
54
|
-
didDocument: unknown;
|
|
55
|
-
didLog: unknown;
|
|
56
|
-
}>;
|
|
57
|
-
export {};
|
|
58
|
-
//# sourceMappingURL=turnkey-did-signer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"turnkey-did-signer.d.ts","sourceRoot":"","sources":["../../src/client/turnkey-did-signer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGrD,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,SAAS,CAAC,CAAa;gBAG7B,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,CAAC,EAAE,MAAM,IAAI;IASxB;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IA2DvD;;OAEG;IACH,uBAAuB,IAAI,MAAM;IAIjC;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC;CAQpB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB,GAAG,OAAO,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC,CAsDD"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Turnkey DID Signer Adapter
|
|
3
|
-
* Adapts Turnkey signing to work with didwebvh-ts signer interface
|
|
4
|
-
* Uses @turnkey/sdk-server for all Turnkey operations (no viem/ethers dependency)
|
|
5
|
-
*/
|
|
6
|
-
import { OriginalsSDK, encoding } from '@originals/sdk';
|
|
7
|
-
import { TurnkeySessionExpiredError, withTokenExpiration } from './turnkey-client';
|
|
8
|
-
/**
|
|
9
|
-
* Signer that uses Turnkey for signing DID documents
|
|
10
|
-
* Compatible with didwebvh-ts signer interface
|
|
11
|
-
*/
|
|
12
|
-
export class TurnkeyDIDSigner {
|
|
13
|
-
turnkeyClient;
|
|
14
|
-
signWith;
|
|
15
|
-
subOrgId;
|
|
16
|
-
publicKeyMultibase;
|
|
17
|
-
onExpired;
|
|
18
|
-
constructor(turnkeyClient, signWith, subOrgId, publicKeyMultibase, onExpired) {
|
|
19
|
-
this.turnkeyClient = turnkeyClient;
|
|
20
|
-
this.signWith = signWith;
|
|
21
|
-
this.subOrgId = subOrgId;
|
|
22
|
-
this.publicKeyMultibase = publicKeyMultibase;
|
|
23
|
-
this.onExpired = onExpired;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Sign the document and proof using Turnkey
|
|
27
|
-
*/
|
|
28
|
-
async sign(input) {
|
|
29
|
-
return withTokenExpiration(async () => {
|
|
30
|
-
try {
|
|
31
|
-
// Use SDK's prepareDIDDataForSigning
|
|
32
|
-
const dataToSign = await OriginalsSDK.prepareDIDDataForSigning(input.document, input.proof);
|
|
33
|
-
// Sign with Turnkey via server SDK
|
|
34
|
-
const result = await this.turnkeyClient.apiClient().signRawPayload({
|
|
35
|
-
organizationId: this.subOrgId,
|
|
36
|
-
signWith: this.signWith,
|
|
37
|
-
payload: Buffer.from(dataToSign).toString('hex'),
|
|
38
|
-
encoding: 'PAYLOAD_ENCODING_HEXADECIMAL',
|
|
39
|
-
hashFunction: 'HASH_FUNCTION_NO_OP',
|
|
40
|
-
});
|
|
41
|
-
const r = result.r;
|
|
42
|
-
const s = result.s;
|
|
43
|
-
if (!r || !s) {
|
|
44
|
-
throw new Error('Invalid signature response from Turnkey');
|
|
45
|
-
}
|
|
46
|
-
// For Ed25519, combine r+s only (64 bytes total)
|
|
47
|
-
const cleanR = r.startsWith('0x') ? r.slice(2) : r;
|
|
48
|
-
const cleanS = s.startsWith('0x') ? s.slice(2) : s;
|
|
49
|
-
const combinedHex = cleanR + cleanS;
|
|
50
|
-
const signatureBytes = Buffer.from(combinedHex, 'hex');
|
|
51
|
-
if (signatureBytes.length !== 64) {
|
|
52
|
-
throw new Error(`Invalid Ed25519 signature length: ${signatureBytes.length} (expected 64 bytes)`);
|
|
53
|
-
}
|
|
54
|
-
const proofValue = encoding.multibase.encode(signatureBytes, 'base58btc');
|
|
55
|
-
return { proofValue };
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
console.error('[TurnkeyDIDSigner] Error signing with Turnkey:', error);
|
|
59
|
-
const errorStr = JSON.stringify(error);
|
|
60
|
-
if (errorStr.toLowerCase().includes('api_key_expired') ||
|
|
61
|
-
errorStr.toLowerCase().includes('expired api key') ||
|
|
62
|
-
errorStr.toLowerCase().includes('"code":16')) {
|
|
63
|
-
console.warn('Detected expired API key in sign method, calling onExpired');
|
|
64
|
-
if (this.onExpired) {
|
|
65
|
-
this.onExpired();
|
|
66
|
-
}
|
|
67
|
-
throw new TurnkeySessionExpiredError();
|
|
68
|
-
}
|
|
69
|
-
throw error;
|
|
70
|
-
}
|
|
71
|
-
}, this.onExpired);
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Get the verification method ID for this signer
|
|
75
|
-
*/
|
|
76
|
-
getVerificationMethodId() {
|
|
77
|
-
return `did:key:${this.publicKeyMultibase}`;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Verify a signature
|
|
81
|
-
*/
|
|
82
|
-
async verify(signature, message, publicKey) {
|
|
83
|
-
try {
|
|
84
|
-
return await OriginalsSDK.verifyDIDSignature(signature, message, publicKey);
|
|
85
|
-
}
|
|
86
|
-
catch (error) {
|
|
87
|
-
console.error('[TurnkeyDIDSigner] Error verifying signature:', error);
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Create a DID:WebVH using OriginalsSDK.createDIDOriginal() with Turnkey signing
|
|
94
|
-
*/
|
|
95
|
-
export async function createDIDWithTurnkey(params) {
|
|
96
|
-
const { turnkeyClient, updateKeyAccount, subOrgId, authKeyPublic, assertionKeyPublic, updateKeyPublic, domain, slug, onExpired, } = params;
|
|
97
|
-
// Create Turnkey signer for the update key
|
|
98
|
-
const signer = new TurnkeyDIDSigner(turnkeyClient, updateKeyAccount.address, subOrgId, updateKeyPublic, onExpired);
|
|
99
|
-
// Use SDK's createDIDOriginal
|
|
100
|
-
const result = await OriginalsSDK.createDIDOriginal({
|
|
101
|
-
type: 'did',
|
|
102
|
-
domain,
|
|
103
|
-
signer,
|
|
104
|
-
verifier: signer,
|
|
105
|
-
updateKeys: [signer.getVerificationMethodId()],
|
|
106
|
-
verificationMethods: [
|
|
107
|
-
{
|
|
108
|
-
id: '#key-0',
|
|
109
|
-
type: 'Multikey',
|
|
110
|
-
controller: '',
|
|
111
|
-
publicKeyMultibase: authKeyPublic,
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
id: '#key-1',
|
|
115
|
-
type: 'Multikey',
|
|
116
|
-
controller: '',
|
|
117
|
-
publicKeyMultibase: assertionKeyPublic,
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
paths: [slug],
|
|
121
|
-
portable: false,
|
|
122
|
-
authentication: ['#key-0'],
|
|
123
|
-
assertionMethod: ['#key-1'],
|
|
124
|
-
});
|
|
125
|
-
return {
|
|
126
|
-
did: result.did,
|
|
127
|
-
didDocument: result.doc,
|
|
128
|
-
didLog: result.log,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=turnkey-did-signer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"turnkey-did-signer.js","sourceRoot":"","sources":["../../src/client/turnkey-did-signer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @originals/auth - Turnkey-based authentication for the Originals Protocol
|
|
3
|
-
*
|
|
4
|
-
* This package provides authentication utilities for both server and client applications.
|
|
5
|
-
*
|
|
6
|
-
* Server-side:
|
|
7
|
-
* ```typescript
|
|
8
|
-
* import { createAuthMiddleware, initiateEmailAuth, verifyEmailAuth } from '@originals/auth/server';
|
|
9
|
-
* ```
|
|
10
|
-
*
|
|
11
|
-
* Client-side (pure functions, no React):
|
|
12
|
-
* ```typescript
|
|
13
|
-
* import { initializeTurnkeyClient, initOtp, completeOtp, fetchWallets } from '@originals/auth/client';
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* Types:
|
|
17
|
-
* ```typescript
|
|
18
|
-
* import type { AuthUser, TokenPayload, TurnkeyWallet } from '@originals/auth/types';
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
export * from './types';
|
|
22
|
-
export * from './server';
|
|
23
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @originals/auth - Turnkey-based authentication for the Originals Protocol
|
|
3
|
-
*
|
|
4
|
-
* This package provides authentication utilities for both server and client applications.
|
|
5
|
-
*
|
|
6
|
-
* Server-side:
|
|
7
|
-
* ```typescript
|
|
8
|
-
* import { createAuthMiddleware, initiateEmailAuth, verifyEmailAuth } from '@originals/auth/server';
|
|
9
|
-
* ```
|
|
10
|
-
*
|
|
11
|
-
* Client-side (pure functions, no React):
|
|
12
|
-
* ```typescript
|
|
13
|
-
* import { initializeTurnkeyClient, initOtp, completeOtp, fetchWallets } from '@originals/auth/client';
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* Types:
|
|
17
|
-
* ```typescript
|
|
18
|
-
* import type { AuthUser, TokenPayload, TurnkeyWallet } from '@originals/auth/types';
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
// Re-export types
|
|
22
|
-
export * from './types';
|
|
23
|
-
// Re-export server utilities (for convenience, though subpath is preferred)
|
|
24
|
-
export * from './server';
|
|
25
|
-
// Note: Client utilities should be imported from '@originals/auth/client'
|
|
26
|
-
// to avoid bundling React in server environments
|
|
27
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,kBAAkB;AAClB,cAAc,SAAS,CAAC;AAExB,4EAA4E;AAC5E,cAAc,UAAU,CAAC;AAEzB,0EAA0E;AAC1E,iDAAiD"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Turnkey Email Authentication Service
|
|
3
|
-
* Implements email-based authentication using Turnkey's OTP flow
|
|
4
|
-
*/
|
|
5
|
-
import { Turnkey } from '@turnkey/sdk-server';
|
|
6
|
-
import type { EmailAuthSession, InitiateAuthResult, VerifyAuthResult } from '../types';
|
|
7
|
-
/**
|
|
8
|
-
* Session storage interface for pluggable session management
|
|
9
|
-
*/
|
|
10
|
-
export interface SessionStorage {
|
|
11
|
-
get(sessionId: string): EmailAuthSession | undefined;
|
|
12
|
-
set(sessionId: string, session: EmailAuthSession): void;
|
|
13
|
-
delete(sessionId: string): void;
|
|
14
|
-
cleanup(): void;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create an in-memory session storage
|
|
18
|
-
* For production, consider using Redis or a database
|
|
19
|
-
*/
|
|
20
|
-
export declare function createInMemorySessionStorage(): SessionStorage;
|
|
21
|
-
/**
|
|
22
|
-
* Initiate email authentication using Turnkey OTP
|
|
23
|
-
* Sends a 6-digit OTP code to the user's email
|
|
24
|
-
*/
|
|
25
|
-
export declare function initiateEmailAuth(email: string, turnkeyClient: Turnkey, sessionStorage?: SessionStorage): Promise<InitiateAuthResult>;
|
|
26
|
-
/**
|
|
27
|
-
* Verify email authentication code using Turnkey OTP
|
|
28
|
-
*/
|
|
29
|
-
export declare function verifyEmailAuth(sessionId: string, code: string, turnkeyClient: Turnkey, sessionStorage?: SessionStorage): Promise<VerifyAuthResult>;
|
|
30
|
-
/**
|
|
31
|
-
* Check if a session is verified
|
|
32
|
-
*/
|
|
33
|
-
export declare function isSessionVerified(sessionId: string, sessionStorage?: SessionStorage): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Clean up a session after successful login
|
|
36
|
-
*/
|
|
37
|
-
export declare function cleanupSession(sessionId: string, sessionStorage?: SessionStorage): void;
|
|
38
|
-
/**
|
|
39
|
-
* Get session data
|
|
40
|
-
*/
|
|
41
|
-
export declare function getSession(sessionId: string, sessionStorage?: SessionStorage): EmailAuthSession | undefined;
|
|
42
|
-
//# sourceMappingURL=email-auth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"email-auth.d.ts","sourceRoot":"","sources":["../../src/server/email-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAMvF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACrD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,cAAc,CA2B7D;AAmBD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,EACtB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CA2D7B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,EACtB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAqD3B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAYT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,cAAc,GAC9B,IAAI,CAGN;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,cAAc,GAC9B,gBAAgB,GAAG,SAAS,CAa9B"}
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Turnkey Email Authentication Service
|
|
3
|
-
* Implements email-based authentication using Turnkey's OTP flow
|
|
4
|
-
*/
|
|
5
|
-
import { sha256 } from '@noble/hashes/sha2.js';
|
|
6
|
-
import { bytesToHex } from '@noble/hashes/utils.js';
|
|
7
|
-
import { getOrCreateTurnkeySubOrg } from './turnkey-client';
|
|
8
|
-
// Session timeout (15 minutes to match Turnkey OTP)
|
|
9
|
-
const SESSION_TIMEOUT = 15 * 60 * 1000;
|
|
10
|
-
/**
|
|
11
|
-
* Create an in-memory session storage
|
|
12
|
-
* For production, consider using Redis or a database
|
|
13
|
-
*/
|
|
14
|
-
export function createInMemorySessionStorage() {
|
|
15
|
-
const sessions = new Map();
|
|
16
|
-
// Start cleanup interval
|
|
17
|
-
const cleanupInterval = setInterval(() => {
|
|
18
|
-
const now = Date.now();
|
|
19
|
-
for (const [sessionId, session] of sessions.entries()) {
|
|
20
|
-
if (now - session.timestamp > SESSION_TIMEOUT) {
|
|
21
|
-
sessions.delete(sessionId);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}, 60 * 1000);
|
|
25
|
-
// Keep the interval from preventing process exit
|
|
26
|
-
if (cleanupInterval.unref) {
|
|
27
|
-
cleanupInterval.unref();
|
|
28
|
-
}
|
|
29
|
-
return {
|
|
30
|
-
get: (sessionId) => sessions.get(sessionId),
|
|
31
|
-
set: (sessionId, session) => sessions.set(sessionId, session),
|
|
32
|
-
delete: (sessionId) => sessions.delete(sessionId),
|
|
33
|
-
cleanup: () => {
|
|
34
|
-
clearInterval(cleanupInterval);
|
|
35
|
-
sessions.clear();
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
// Default session storage
|
|
40
|
-
let defaultSessionStorage = null;
|
|
41
|
-
function getDefaultSessionStorage() {
|
|
42
|
-
if (!defaultSessionStorage) {
|
|
43
|
-
defaultSessionStorage = createInMemorySessionStorage();
|
|
44
|
-
}
|
|
45
|
-
return defaultSessionStorage;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Generate a random session ID
|
|
49
|
-
*/
|
|
50
|
-
function generateSessionId() {
|
|
51
|
-
return `session_${Date.now()}_${Math.random().toString(36).substring(2, 15)}`;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Initiate email authentication using Turnkey OTP
|
|
55
|
-
* Sends a 6-digit OTP code to the user's email
|
|
56
|
-
*/
|
|
57
|
-
export async function initiateEmailAuth(email, turnkeyClient, sessionStorage) {
|
|
58
|
-
const storage = sessionStorage ?? getDefaultSessionStorage();
|
|
59
|
-
// Validate email format
|
|
60
|
-
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
61
|
-
if (!emailRegex.test(email)) {
|
|
62
|
-
throw new Error('Invalid email format');
|
|
63
|
-
}
|
|
64
|
-
console.log(`\n🚀 Initiating email auth for: ${email}`);
|
|
65
|
-
// Step 1: Get or create Turnkey sub-organization
|
|
66
|
-
const subOrgId = await getOrCreateTurnkeySubOrg(email, turnkeyClient);
|
|
67
|
-
// Step 2: Send OTP via Turnkey
|
|
68
|
-
console.log(`📨 Sending OTP to ${email} via Turnkey...`);
|
|
69
|
-
// Generate a unique user identifier for rate limiting
|
|
70
|
-
const data = new TextEncoder().encode(email);
|
|
71
|
-
const hash = sha256(data);
|
|
72
|
-
const userIdentifier = bytesToHex(hash);
|
|
73
|
-
const otpResult = await turnkeyClient.apiClient().initOtp({
|
|
74
|
-
otpType: 'OTP_TYPE_EMAIL',
|
|
75
|
-
contact: email,
|
|
76
|
-
userIdentifier: userIdentifier,
|
|
77
|
-
appName: 'Originals',
|
|
78
|
-
otpLength: 6,
|
|
79
|
-
alphanumeric: false,
|
|
80
|
-
});
|
|
81
|
-
const otpId = otpResult.otpId;
|
|
82
|
-
if (!otpId) {
|
|
83
|
-
throw new Error('Failed to initiate OTP - no OTP ID returned');
|
|
84
|
-
}
|
|
85
|
-
console.log(`✅ OTP sent! OTP ID: ${otpId}`);
|
|
86
|
-
// Create auth session
|
|
87
|
-
const sessionId = generateSessionId();
|
|
88
|
-
storage.set(sessionId, {
|
|
89
|
-
email,
|
|
90
|
-
subOrgId,
|
|
91
|
-
otpId,
|
|
92
|
-
timestamp: Date.now(),
|
|
93
|
-
verified: false,
|
|
94
|
-
});
|
|
95
|
-
console.log('='.repeat(60));
|
|
96
|
-
console.log(`📧 Check ${email} for the verification code!`);
|
|
97
|
-
console.log(` Session ID: ${sessionId}`);
|
|
98
|
-
console.log(` Valid for: 15 minutes`);
|
|
99
|
-
console.log('='.repeat(60) + '\n');
|
|
100
|
-
return {
|
|
101
|
-
sessionId,
|
|
102
|
-
message: 'Verification code sent to your email. Check your inbox!',
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Verify email authentication code using Turnkey OTP
|
|
107
|
-
*/
|
|
108
|
-
export async function verifyEmailAuth(sessionId, code, turnkeyClient, sessionStorage) {
|
|
109
|
-
const storage = sessionStorage ?? getDefaultSessionStorage();
|
|
110
|
-
const session = storage.get(sessionId);
|
|
111
|
-
if (!session) {
|
|
112
|
-
throw new Error('Invalid or expired session');
|
|
113
|
-
}
|
|
114
|
-
// Check if session has expired
|
|
115
|
-
if (Date.now() - session.timestamp > SESSION_TIMEOUT) {
|
|
116
|
-
storage.delete(sessionId);
|
|
117
|
-
throw new Error('Session expired. Please request a new code.');
|
|
118
|
-
}
|
|
119
|
-
if (!session.otpId) {
|
|
120
|
-
throw new Error('OTP ID not found in session');
|
|
121
|
-
}
|
|
122
|
-
if (!session.subOrgId) {
|
|
123
|
-
throw new Error('Sub-organization ID not found');
|
|
124
|
-
}
|
|
125
|
-
console.log(`\n🔐 Verifying OTP for session ${sessionId}...`);
|
|
126
|
-
try {
|
|
127
|
-
// Verify the OTP code with Turnkey
|
|
128
|
-
const verifyResult = await turnkeyClient.apiClient().verifyOtp({
|
|
129
|
-
otpId: session.otpId,
|
|
130
|
-
otpCode: code,
|
|
131
|
-
expirationSeconds: '900', // 15 minutes
|
|
132
|
-
});
|
|
133
|
-
if (!verifyResult.verificationToken) {
|
|
134
|
-
throw new Error('OTP verification failed - no verification token returned');
|
|
135
|
-
}
|
|
136
|
-
console.log(`✅ OTP verified successfully!`);
|
|
137
|
-
// Mark session as verified
|
|
138
|
-
session.verified = true;
|
|
139
|
-
storage.set(sessionId, session);
|
|
140
|
-
return {
|
|
141
|
-
verified: true,
|
|
142
|
-
email: session.email,
|
|
143
|
-
subOrgId: session.subOrgId,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
catch (error) {
|
|
147
|
-
console.error('❌ OTP verification failed:', error);
|
|
148
|
-
throw new Error(`Invalid verification code: ${error instanceof Error ? error.message : String(error)}`);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Check if a session is verified
|
|
153
|
-
*/
|
|
154
|
-
export function isSessionVerified(sessionId, sessionStorage) {
|
|
155
|
-
const storage = sessionStorage ?? getDefaultSessionStorage();
|
|
156
|
-
const session = storage.get(sessionId);
|
|
157
|
-
if (!session)
|
|
158
|
-
return false;
|
|
159
|
-
if (Date.now() - session.timestamp > SESSION_TIMEOUT) {
|
|
160
|
-
storage.delete(sessionId);
|
|
161
|
-
return false;
|
|
162
|
-
}
|
|
163
|
-
return session.verified;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Clean up a session after successful login
|
|
167
|
-
*/
|
|
168
|
-
export function cleanupSession(sessionId, sessionStorage) {
|
|
169
|
-
const storage = sessionStorage ?? getDefaultSessionStorage();
|
|
170
|
-
storage.delete(sessionId);
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Get session data
|
|
174
|
-
*/
|
|
175
|
-
export function getSession(sessionId, sessionStorage) {
|
|
176
|
-
const storage = sessionStorage ?? getDefaultSessionStorage();
|
|
177
|
-
const session = storage.get(sessionId);
|
|
178
|
-
if (!session)
|
|
179
|
-
return undefined;
|
|
180
|
-
// Check if expired
|
|
181
|
-
if (Date.now() - session.timestamp > SESSION_TIMEOUT) {
|
|
182
|
-
storage.delete(sessionId);
|
|
183
|
-
return undefined;
|
|
184
|
-
}
|
|
185
|
-
return session;
|
|
186
|
-
}
|
|
187
|
-
//# sourceMappingURL=email-auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"email-auth.js","sourceRoot":"","sources":["../../src/server/email-auth.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Server-side authentication utilities
|
|
3
|
-
*
|
|
4
|
-
* @example
|
|
5
|
-
* ```typescript
|
|
6
|
-
* import {
|
|
7
|
-
* createAuthMiddleware,
|
|
8
|
-
* initiateEmailAuth,
|
|
9
|
-
* verifyEmailAuth,
|
|
10
|
-
* signToken,
|
|
11
|
-
* verifyToken,
|
|
12
|
-
* createTurnkeyClient,
|
|
13
|
-
* TurnkeyWebVHSigner
|
|
14
|
-
* } from '@originals/auth/server';
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
export { createTurnkeyClient, getOrCreateTurnkeySubOrg } from './turnkey-client';
|
|
18
|
-
export { initiateEmailAuth, verifyEmailAuth, isSessionVerified, cleanupSession, getSession, type SessionStorage, createInMemorySessionStorage, } from './email-auth';
|
|
19
|
-
export { signToken, verifyToken, getAuthCookieConfig, getClearAuthCookieConfig, } from './jwt';
|
|
20
|
-
export { createAuthMiddleware } from './middleware';
|
|
21
|
-
export { TurnkeyWebVHSigner, createTurnkeySigner } from './turnkey-signer';
|
|
22
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,KAAK,cAAc,EACnB,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/server/index.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Server-side authentication utilities
|
|
3
|
-
*
|
|
4
|
-
* @example
|
|
5
|
-
* ```typescript
|
|
6
|
-
* import {
|
|
7
|
-
* createAuthMiddleware,
|
|
8
|
-
* initiateEmailAuth,
|
|
9
|
-
* verifyEmailAuth,
|
|
10
|
-
* signToken,
|
|
11
|
-
* verifyToken,
|
|
12
|
-
* createTurnkeyClient,
|
|
13
|
-
* TurnkeyWebVHSigner
|
|
14
|
-
* } from '@originals/auth/server';
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
export { createTurnkeyClient, getOrCreateTurnkeySubOrg } from './turnkey-client';
|
|
18
|
-
export { initiateEmailAuth, verifyEmailAuth, isSessionVerified, cleanupSession, getSession, createInMemorySessionStorage, } from './email-auth';
|
|
19
|
-
export { signToken, verifyToken, getAuthCookieConfig, getClearAuthCookieConfig, } from './jwt';
|
|
20
|
-
export { createAuthMiddleware } from './middleware';
|
|
21
|
-
export { TurnkeyWebVHSigner, createTurnkeySigner } from './turnkey-signer';
|
|
22
|
-
//# sourceMappingURL=index.js.map
|
package/dist/server/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,UAAU,EAEV,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/server/jwt.d.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* JWT Authentication Module
|
|
3
|
-
* Implements secure token issuance and validation with HTTP-only cookies
|
|
4
|
-
*/
|
|
5
|
-
import type { TokenPayload, AuthCookieConfig } from '../types';
|
|
6
|
-
/**
|
|
7
|
-
* Sign a JWT token for a user
|
|
8
|
-
* @param subOrgId - Turnkey sub-organization ID (stable identifier)
|
|
9
|
-
* @param email - User email (metadata)
|
|
10
|
-
* @param sessionToken - Optional Turnkey session token for user authentication
|
|
11
|
-
* @param options - Additional options
|
|
12
|
-
* @returns Signed JWT token string
|
|
13
|
-
*/
|
|
14
|
-
export declare function signToken(subOrgId: string, email: string, sessionToken?: string, options?: {
|
|
15
|
-
secret?: string;
|
|
16
|
-
expiresIn?: number;
|
|
17
|
-
issuer?: string;
|
|
18
|
-
audience?: string;
|
|
19
|
-
}): string;
|
|
20
|
-
/**
|
|
21
|
-
* Verify and decode a JWT token
|
|
22
|
-
* @param token - JWT token string
|
|
23
|
-
* @param options - Additional options
|
|
24
|
-
* @returns Decoded token payload
|
|
25
|
-
* @throws Error if token is invalid or expired
|
|
26
|
-
*/
|
|
27
|
-
export declare function verifyToken(token: string, options?: {
|
|
28
|
-
secret?: string;
|
|
29
|
-
issuer?: string;
|
|
30
|
-
audience?: string;
|
|
31
|
-
}): TokenPayload;
|
|
32
|
-
/**
|
|
33
|
-
* Generate a secure cookie configuration for authentication tokens
|
|
34
|
-
* @param token - JWT token to set in cookie
|
|
35
|
-
* @param options - Cookie options
|
|
36
|
-
* @returns Cookie configuration object
|
|
37
|
-
*/
|
|
38
|
-
export declare function getAuthCookieConfig(token: string, options?: {
|
|
39
|
-
cookieName?: string;
|
|
40
|
-
maxAge?: number;
|
|
41
|
-
secure?: boolean;
|
|
42
|
-
}): AuthCookieConfig;
|
|
43
|
-
/**
|
|
44
|
-
* Get cookie configuration for logout (clears the auth cookie)
|
|
45
|
-
* @param cookieName - Name of the cookie to clear
|
|
46
|
-
* @returns Cookie configuration for clearing
|
|
47
|
-
*/
|
|
48
|
-
export declare function getClearAuthCookieConfig(cookieName?: string): AuthCookieConfig;
|
|
49
|
-
//# sourceMappingURL=jwt.d.ts.map
|
package/dist/server/jwt.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/server/jwt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAgB/D;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,MAAM,CAuBR;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,YAAY,CAuBd;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,gBAAgB,CAclB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAc9E"}
|