@account-kit/signer 4.39.0 → 4.41.0
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/dist/esm/base.d.ts +61 -1
- package/dist/esm/base.js +148 -1
- package/dist/esm/base.js.map +1 -1
- package/dist/esm/client/base.d.ts +47 -4
- package/dist/esm/client/base.js +139 -1
- package/dist/esm/client/base.js.map +1 -1
- package/dist/esm/client/index.d.ts +3 -3
- package/dist/esm/client/index.js +7 -0
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/types.d.ts +44 -0
- package/dist/esm/client/types.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/base.d.ts +61 -1
- package/dist/types/base.d.ts.map +1 -1
- package/dist/types/client/base.d.ts +47 -4
- package/dist/types/client/base.d.ts.map +1 -1
- package/dist/types/client/index.d.ts +3 -3
- package/dist/types/client/index.d.ts.map +1 -1
- package/dist/types/client/types.d.ts +44 -0
- package/dist/types/client/types.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +5 -5
- package/src/base.ts +148 -1
- package/src/client/base.ts +123 -4
- package/src/client/index.ts +10 -2
- package/src/client/types.ts +46 -0
- package/src/version.ts +1 -1
|
@@ -49,6 +49,7 @@ export type OauthParams = Extract<AuthParams, {
|
|
|
49
49
|
type: "oauth";
|
|
50
50
|
}> & {
|
|
51
51
|
expirationSeconds?: number;
|
|
52
|
+
fetchIdTokenOnly?: boolean;
|
|
52
53
|
};
|
|
53
54
|
export type OtpParams = {
|
|
54
55
|
orgId: string;
|
|
@@ -146,13 +147,34 @@ export type SignerEndpoints = [
|
|
|
146
147
|
signature: Hex;
|
|
147
148
|
};
|
|
148
149
|
},
|
|
150
|
+
{
|
|
151
|
+
Route: "/v1/update-email-auth";
|
|
152
|
+
Body: {
|
|
153
|
+
stampedRequest: TSignedRequest;
|
|
154
|
+
};
|
|
155
|
+
Response: void;
|
|
156
|
+
},
|
|
149
157
|
{
|
|
150
158
|
Route: "/v1/add-oauth-provider";
|
|
151
159
|
Body: {
|
|
152
160
|
stampedRequest: TSignedRequest;
|
|
153
161
|
};
|
|
162
|
+
Response: {
|
|
163
|
+
oauthProviders: OauthProviderInfo[];
|
|
164
|
+
};
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
Route: "/v1/remove-oauth-provider";
|
|
168
|
+
Body: {
|
|
169
|
+
stampedRequest: TSignedRequest;
|
|
170
|
+
};
|
|
154
171
|
Response: void;
|
|
155
172
|
},
|
|
173
|
+
{
|
|
174
|
+
Route: "/v1/list-auth-methods";
|
|
175
|
+
Body: {};
|
|
176
|
+
Response: AuthMethods;
|
|
177
|
+
},
|
|
156
178
|
{
|
|
157
179
|
Route: "/v1/prepare-oauth";
|
|
158
180
|
Body: {
|
|
@@ -247,6 +269,11 @@ export type AuthLinkingPrompt = {
|
|
|
247
269
|
otpId: string;
|
|
248
270
|
orgId: string;
|
|
249
271
|
};
|
|
272
|
+
export type IdTokenOnly = {
|
|
273
|
+
status: "FETCHED_ID_TOKEN_ONLY";
|
|
274
|
+
idToken: string;
|
|
275
|
+
providerName: string;
|
|
276
|
+
};
|
|
250
277
|
export type OauthState = {
|
|
251
278
|
authProviderId: string;
|
|
252
279
|
isCustomProvider?: boolean;
|
|
@@ -255,6 +282,7 @@ export type OauthState = {
|
|
|
255
282
|
expirationSeconds?: number;
|
|
256
283
|
redirectUrl?: string;
|
|
257
284
|
openerOrigin?: string;
|
|
285
|
+
fetchIdTokenOnly?: boolean;
|
|
258
286
|
};
|
|
259
287
|
export type GetOauthProviderUrlArgs = {
|
|
260
288
|
oauthParams: OauthParams;
|
|
@@ -305,6 +333,22 @@ export type AddOauthProviderParams = {
|
|
|
305
333
|
providerName: string;
|
|
306
334
|
oidcToken: string;
|
|
307
335
|
};
|
|
336
|
+
export type AuthMethods = {
|
|
337
|
+
email?: string;
|
|
338
|
+
oauthProviders: OauthProviderInfo[];
|
|
339
|
+
passkeys: PasskeyInfo[];
|
|
340
|
+
};
|
|
341
|
+
export type OauthProviderInfo = {
|
|
342
|
+
providerId: string;
|
|
343
|
+
issuer: string;
|
|
344
|
+
providerName?: string;
|
|
345
|
+
userDisplayName?: string;
|
|
346
|
+
};
|
|
347
|
+
export type PasskeyInfo = {
|
|
348
|
+
authenticatorId: string;
|
|
349
|
+
name: string;
|
|
350
|
+
createdAt: number;
|
|
351
|
+
};
|
|
308
352
|
export type experimental_CreateApiKeyParams = {
|
|
309
353
|
name: string;
|
|
310
354
|
publicKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "4.
|
|
1
|
+
export declare const VERSION = "4.41.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@account-kit/signer",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.41.0",
|
|
4
4
|
"description": "Core interfaces and clients for interfacing with the Alchemy Signer API",
|
|
5
5
|
"author": "Alchemy",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"build": "yarn clean && yarn build:esm && yarn build:types",
|
|
35
35
|
"build:esm": "tsc --project tsconfig.build.json --outDir ./dist/esm",
|
|
36
36
|
"build:types": "tsc --project tsconfig.build.json --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap",
|
|
37
|
-
"fern:gen": "node ../../doc-gen/dist/esm/cli.js generate --in ./src/index.ts --out ../../docs/pages/reference/account-kit/signer
|
|
37
|
+
"fern:gen": "node ../../doc-gen/dist/esm/cli.js generate --in ./src/index.ts --out ../../docs/pages/reference/account-kit/signer",
|
|
38
38
|
"clean": "rm -rf ./dist",
|
|
39
39
|
"test": "vitest --passWithNoTests",
|
|
40
40
|
"test:run": "vitest run --passWithNoTests"
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"typescript-template": "*"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@aa-sdk/core": "^4.
|
|
52
|
-
"@account-kit/logging": "^4.
|
|
51
|
+
"@aa-sdk/core": "^4.41.0",
|
|
52
|
+
"@account-kit/logging": "^4.41.0",
|
|
53
53
|
"@solana/web3.js": "^1.98.0",
|
|
54
54
|
"@turnkey/http": "^2.22.0",
|
|
55
55
|
"@turnkey/iframe-stamper": "^1.0.0",
|
|
@@ -75,5 +75,5 @@
|
|
|
75
75
|
"url": "https://github.com/alchemyplatform/aa-sdk/issues"
|
|
76
76
|
},
|
|
77
77
|
"homepage": "https://github.com/alchemyplatform/aa-sdk#readme",
|
|
78
|
-
"gitHead": "
|
|
78
|
+
"gitHead": "db374bb77b5961b3d2c5c883e9e77f861df92f59"
|
|
79
79
|
}
|
package/src/base.ts
CHANGED
|
@@ -36,6 +36,9 @@ import {
|
|
|
36
36
|
type AddMfaResult,
|
|
37
37
|
type RemoveMfaParams,
|
|
38
38
|
type AuthLinkingPrompt,
|
|
39
|
+
type OauthProviderInfo,
|
|
40
|
+
type IdTokenOnly,
|
|
41
|
+
type AuthMethods,
|
|
39
42
|
} from "./client/types.js";
|
|
40
43
|
import { NotAuthenticatedError } from "./errors.js";
|
|
41
44
|
import { SignerLogger } from "./metrics.js";
|
|
@@ -732,6 +735,38 @@ export abstract class BaseAlchemySigner<TClient extends BaseSignerClient>
|
|
|
732
735
|
};
|
|
733
736
|
});
|
|
734
737
|
|
|
738
|
+
/*
|
|
739
|
+
* Sets the email for the authenticated user, allowing them to login with that
|
|
740
|
+
* email.
|
|
741
|
+
*
|
|
742
|
+
* You must contact Alchemy to enable this feature for your team, as there are
|
|
743
|
+
* important security considerations. In particular, you must not call this
|
|
744
|
+
* without first validating that the user owns this email account.
|
|
745
|
+
*
|
|
746
|
+
* @param {string} email The email to set for the user
|
|
747
|
+
* @returns {Promise<void>} A promise that resolves when the email is set
|
|
748
|
+
* @throws {NotAuthenticatedError} If the user is not authenticated
|
|
749
|
+
*/
|
|
750
|
+
setEmail: (email: string) => Promise<void> = SignerLogger.profiled(
|
|
751
|
+
"BaseAlchemySigner.setEmail",
|
|
752
|
+
async (email) => {
|
|
753
|
+
return this.inner.setEmail(email);
|
|
754
|
+
},
|
|
755
|
+
);
|
|
756
|
+
|
|
757
|
+
/**
|
|
758
|
+
* Removes the email for the authenticated user, disallowing them from login with that email.
|
|
759
|
+
*
|
|
760
|
+
* @returns {Promise<void>} A promise that resolves when the email is removed
|
|
761
|
+
* @throws {NotAuthenticatedError} If the user is not authenticated
|
|
762
|
+
*/
|
|
763
|
+
removeEmail: () => Promise<void> = SignerLogger.profiled(
|
|
764
|
+
"BaseAlchemySigner.removeEmail",
|
|
765
|
+
async () => {
|
|
766
|
+
return this.inner.removeEmail();
|
|
767
|
+
},
|
|
768
|
+
);
|
|
769
|
+
|
|
735
770
|
/**
|
|
736
771
|
* Adds a passkey to the user's account
|
|
737
772
|
*
|
|
@@ -761,6 +796,41 @@ export abstract class BaseAlchemySigner<TClient extends BaseSignerClient>
|
|
|
761
796
|
return this.inner.addPasskey(params ?? {});
|
|
762
797
|
});
|
|
763
798
|
|
|
799
|
+
/**
|
|
800
|
+
* Removes a passkey from a user's account
|
|
801
|
+
*
|
|
802
|
+
* @example
|
|
803
|
+
* ```ts
|
|
804
|
+
* import { AlchemyWebSigner } from "@account-kit/signer";
|
|
805
|
+
*
|
|
806
|
+
* const signer = new AlchemyWebSigner({
|
|
807
|
+
* client: {
|
|
808
|
+
* connection: {
|
|
809
|
+
* rpcUrl: "/api/rpc",
|
|
810
|
+
* },
|
|
811
|
+
* iframeConfig: {
|
|
812
|
+
* iframeContainerId: "alchemy-signer-iframe-container",
|
|
813
|
+
* },
|
|
814
|
+
* },
|
|
815
|
+
* });
|
|
816
|
+
*
|
|
817
|
+
* const authMethods = await signer.listAuthMethods();
|
|
818
|
+
* const passkey = authMethods.passkeys[0];
|
|
819
|
+
*
|
|
820
|
+
* const result = await signer.removePasskey(passkey.authenticatorId);
|
|
821
|
+
* ```
|
|
822
|
+
*
|
|
823
|
+
* @param {CredentialCreationOptions | undefined} params optional parameters for the passkey creation
|
|
824
|
+
* @returns {Promise<string[]>} an array of the authenticator ids added to the user
|
|
825
|
+
*/
|
|
826
|
+
removePasskey: (authenticatorId: string) => Promise<void> =
|
|
827
|
+
SignerLogger.profiled(
|
|
828
|
+
"BaseAlchemySigner.removePasskey",
|
|
829
|
+
async (authenticatorId) => {
|
|
830
|
+
return this.inner.removePasskey(authenticatorId);
|
|
831
|
+
},
|
|
832
|
+
);
|
|
833
|
+
|
|
764
834
|
getPasskeyStatus: () => Promise<{ isPasskeyAdded: boolean }> =
|
|
765
835
|
SignerLogger.profiled("BaseAlchemySigner.getPasskeyStatus", async () => {
|
|
766
836
|
return this.inner.getPasskeyStatus();
|
|
@@ -954,9 +1024,18 @@ export abstract class BaseAlchemySigner<TClient extends BaseSignerClient>
|
|
|
954
1024
|
expirationSeconds: this.getExpirationSeconds(),
|
|
955
1025
|
};
|
|
956
1026
|
if (params.mode === "redirect") {
|
|
957
|
-
|
|
1027
|
+
const user = await this.inner.oauthWithRedirect(params);
|
|
1028
|
+
if (!isUser(user)) {
|
|
1029
|
+
throw new Error("Expected user from oauth with redirect");
|
|
1030
|
+
}
|
|
1031
|
+
return user;
|
|
958
1032
|
}
|
|
959
1033
|
const result = await this.inner.oauthWithPopup(params);
|
|
1034
|
+
if (isIdTokenOnly(result)) {
|
|
1035
|
+
throw new Error(
|
|
1036
|
+
"Should not get only id token when authenticating with oauth",
|
|
1037
|
+
);
|
|
1038
|
+
}
|
|
960
1039
|
if (!isAuthLinkingPrompt(result)) {
|
|
961
1040
|
return result;
|
|
962
1041
|
}
|
|
@@ -964,6 +1043,64 @@ export abstract class BaseAlchemySigner<TClient extends BaseSignerClient>
|
|
|
964
1043
|
return this.waitForConnected();
|
|
965
1044
|
};
|
|
966
1045
|
|
|
1046
|
+
/**
|
|
1047
|
+
* Handles OAuth authentication by augmenting the provided arguments with a type and performing authentication based on the OAuth mode (either using redirect or popup).
|
|
1048
|
+
*
|
|
1049
|
+
* @param {Omit<Extract<AuthParams, { type: "oauth" }>, "type">} args Authentication parameters omitting the type, which will be set to "oauth"
|
|
1050
|
+
* @returns {Promise<OauthProviderInfo>} A promise that resolves to an `OauthProviderInfo` object containing provider information and the ID token.
|
|
1051
|
+
*/
|
|
1052
|
+
public addOauthProvider = async (
|
|
1053
|
+
args: Omit<Extract<AuthParams, { type: "oauth" }>, "type">,
|
|
1054
|
+
): Promise<OauthProviderInfo> => {
|
|
1055
|
+
// This cast is required to suppress a spurious type error. We're just
|
|
1056
|
+
// putting the omitted field back in, but TypeScript doesn't recognize that.
|
|
1057
|
+
const argsWithType = { type: "oauth", ...args } as Extract<
|
|
1058
|
+
AuthParams,
|
|
1059
|
+
{ type: "oauth" }
|
|
1060
|
+
>;
|
|
1061
|
+
const params: OauthParams = {
|
|
1062
|
+
...argsWithType,
|
|
1063
|
+
fetchIdTokenOnly: true,
|
|
1064
|
+
};
|
|
1065
|
+
const result = await (params.mode === "redirect"
|
|
1066
|
+
? this.inner.oauthWithRedirect(params)
|
|
1067
|
+
: this.inner.oauthWithPopup(params));
|
|
1068
|
+
if (!isIdTokenOnly(result)) {
|
|
1069
|
+
throw new Error("Expected id token only from oauth response");
|
|
1070
|
+
}
|
|
1071
|
+
return await this.inner.addOauthProvider({
|
|
1072
|
+
providerName: result.providerName,
|
|
1073
|
+
oidcToken: result.idToken,
|
|
1074
|
+
});
|
|
1075
|
+
};
|
|
1076
|
+
|
|
1077
|
+
/**
|
|
1078
|
+
* Removes an OAuth provider by its ID if the user is authenticated.
|
|
1079
|
+
*
|
|
1080
|
+
* @param {string} providerId The ID of the OAuth provider to be removed, as obtained from `listOauthProviders`
|
|
1081
|
+
* @returns {Promise<any>} A promise indicating the result of the removal process
|
|
1082
|
+
* @throws {NotAuthenticatedError} Thrown if the user is not authenticated
|
|
1083
|
+
*/
|
|
1084
|
+
public removeOauthProvider = async (providerId: string) => {
|
|
1085
|
+
if (!this.inner.getUser()) {
|
|
1086
|
+
throw new NotAuthenticatedError();
|
|
1087
|
+
}
|
|
1088
|
+
return this.inner.removeOauthProvider(providerId);
|
|
1089
|
+
};
|
|
1090
|
+
|
|
1091
|
+
/**
|
|
1092
|
+
* Retrieves a list of auth methods associated with the authenticated user.
|
|
1093
|
+
*
|
|
1094
|
+
* @returns {Promise<AuthMethods>} A promise that resolves to an `AuthMethods` object containing the user's email, OAuth providers, and passkeys.
|
|
1095
|
+
* @throws {NotAuthenticatedError} Thrown if the user is not authenticated
|
|
1096
|
+
*/
|
|
1097
|
+
public listAuthMethods = async (): Promise<AuthMethods> => {
|
|
1098
|
+
if (!this.inner.getUser()) {
|
|
1099
|
+
throw new NotAuthenticatedError();
|
|
1100
|
+
}
|
|
1101
|
+
return this.inner.listAuthMethods();
|
|
1102
|
+
};
|
|
1103
|
+
|
|
967
1104
|
private authenticateWithOtp = async (
|
|
968
1105
|
args: Extract<AuthParams, { type: "otp" }>,
|
|
969
1106
|
): Promise<User> => {
|
|
@@ -1557,9 +1694,19 @@ function subscribeWithDelayedFireImmediately<T>(
|
|
|
1557
1694
|
};
|
|
1558
1695
|
}
|
|
1559
1696
|
|
|
1697
|
+
function isUser(
|
|
1698
|
+
result: User | AuthLinkingPrompt | IdTokenOnly,
|
|
1699
|
+
): result is User {
|
|
1700
|
+
return !isAuthLinkingPrompt(result) && !isIdTokenOnly(result);
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1560
1703
|
function isAuthLinkingPrompt(result: unknown): result is AuthLinkingPrompt {
|
|
1561
1704
|
return (
|
|
1562
1705
|
(result as AuthLinkingPrompt)?.status ===
|
|
1563
1706
|
"ACCOUNT_LINKING_CONFIRMATION_REQUIRED"
|
|
1564
1707
|
);
|
|
1565
1708
|
}
|
|
1709
|
+
|
|
1710
|
+
function isIdTokenOnly(result: unknown): result is IdTokenOnly {
|
|
1711
|
+
return (result as IdTokenOnly)?.status === "FETCHED_ID_TOKEN_ONLY";
|
|
1712
|
+
}
|
package/src/client/base.ts
CHANGED
|
@@ -37,6 +37,9 @@ import type {
|
|
|
37
37
|
AuthLinkingPrompt,
|
|
38
38
|
AddOauthProviderParams,
|
|
39
39
|
CredentialCreationOptionOverrides,
|
|
40
|
+
OauthProviderInfo,
|
|
41
|
+
IdTokenOnly,
|
|
42
|
+
AuthMethods,
|
|
40
43
|
} from "./types.js";
|
|
41
44
|
import { VERSION } from "../version.js";
|
|
42
45
|
|
|
@@ -214,11 +217,11 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
|
|
|
214
217
|
|
|
215
218
|
public abstract oauthWithRedirect(
|
|
216
219
|
args: Extract<OauthParams, { mode: "redirect" }>,
|
|
217
|
-
): Promise<User>;
|
|
220
|
+
): Promise<User | IdTokenOnly>;
|
|
218
221
|
|
|
219
222
|
public abstract oauthWithPopup(
|
|
220
223
|
args: Extract<OauthParams, { mode: "popup" }>,
|
|
221
|
-
): Promise<User | AuthLinkingPrompt>;
|
|
224
|
+
): Promise<User | AuthLinkingPrompt | IdTokenOnly>;
|
|
222
225
|
|
|
223
226
|
public abstract submitOtpCode(
|
|
224
227
|
args: Omit<OtpParams, "targetPublicKey">,
|
|
@@ -267,6 +270,59 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
|
|
|
267
270
|
return () => this.eventEmitter.removeListener(event, listener as any);
|
|
268
271
|
};
|
|
269
272
|
|
|
273
|
+
/**
|
|
274
|
+
* Sets the email for the authenticated user, allowing them to login with that
|
|
275
|
+
* email.
|
|
276
|
+
*
|
|
277
|
+
* You must contact Alchemy to enable this feature for your team, as there are
|
|
278
|
+
* important security considerations. In particular, you must not call this
|
|
279
|
+
* without first validating that the user owns this email account.
|
|
280
|
+
*
|
|
281
|
+
* @param {string} email The email to set for the user
|
|
282
|
+
* @returns {Promise<void>} A promise that resolves when the email is set
|
|
283
|
+
* @throws {NotAuthenticatedError} If the user is not authenticated
|
|
284
|
+
*/
|
|
285
|
+
public setEmail = async (email: string): Promise<void> => {
|
|
286
|
+
if (!email) {
|
|
287
|
+
throw new Error(
|
|
288
|
+
"Email must not be empty. Use removeEmail() to remove email auth.",
|
|
289
|
+
);
|
|
290
|
+
}
|
|
291
|
+
await this.updateEmail(email);
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Removes the email for the authenticated user, disallowing them from login with that email.
|
|
296
|
+
*
|
|
297
|
+
* @returns {Promise<void>} A promise that resolves when the email is removed
|
|
298
|
+
* @throws {NotAuthenticatedError} If the user is not authenticated
|
|
299
|
+
*/
|
|
300
|
+
public removeEmail = async (): Promise<void> => {
|
|
301
|
+
// This is a hack to remove the email for the user. Turnkey does not
|
|
302
|
+
// support clearing the email once set, so we set it to a known
|
|
303
|
+
// inaccessible address instead.
|
|
304
|
+
await this.updateEmail("not.enabled@example.invalid");
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
private updateEmail = async (email: string): Promise<void> => {
|
|
308
|
+
if (!this.user) {
|
|
309
|
+
throw new NotAuthenticatedError();
|
|
310
|
+
}
|
|
311
|
+
const stampedRequest = await this.turnkeyClient.stampUpdateUser({
|
|
312
|
+
type: "ACTIVITY_TYPE_UPDATE_USER",
|
|
313
|
+
timestampMs: Date.now().toString(),
|
|
314
|
+
organizationId: this.user.orgId,
|
|
315
|
+
parameters: {
|
|
316
|
+
userId: this.user.userId,
|
|
317
|
+
userEmail: email,
|
|
318
|
+
userTagIds: [],
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
await this.request("/v1/update-email-auth", {
|
|
322
|
+
stampedRequest,
|
|
323
|
+
});
|
|
324
|
+
};
|
|
325
|
+
|
|
270
326
|
/**
|
|
271
327
|
* Handles the creation of authenticators using WebAuthn attestation and the provided options. Requires the user to be authenticated.
|
|
272
328
|
*
|
|
@@ -309,6 +365,28 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
|
|
|
309
365
|
return authenticatorIds;
|
|
310
366
|
};
|
|
311
367
|
|
|
368
|
+
/**
|
|
369
|
+
* Removes a passkey authenticator from the user's account.
|
|
370
|
+
*
|
|
371
|
+
* @param {string} authenticatorId The ID of the authenticator to remove.
|
|
372
|
+
* @returns {Promise<void>} A promise that resolves when the authenticator is removed.
|
|
373
|
+
* @throws {NotAuthenticatedError} If the user is not authenticated.
|
|
374
|
+
*/
|
|
375
|
+
public removePasskey = async (authenticatorId: string): Promise<void> => {
|
|
376
|
+
if (!this.user) {
|
|
377
|
+
throw new NotAuthenticatedError();
|
|
378
|
+
}
|
|
379
|
+
await this.turnkeyClient.deleteAuthenticators({
|
|
380
|
+
type: "ACTIVITY_TYPE_DELETE_AUTHENTICATORS",
|
|
381
|
+
timestampMs: Date.now().toString(),
|
|
382
|
+
organizationId: this.user.orgId,
|
|
383
|
+
parameters: {
|
|
384
|
+
userId: this.user.userId,
|
|
385
|
+
authenticatorIds: [authenticatorId],
|
|
386
|
+
},
|
|
387
|
+
});
|
|
388
|
+
};
|
|
389
|
+
|
|
312
390
|
/**
|
|
313
391
|
* Asynchronously handles the authentication process using WebAuthn Stamper. If a user is provided, sets the user and returns it. Otherwise, retrieves the current user and initializes the WebAuthn stamper.
|
|
314
392
|
*
|
|
@@ -361,7 +439,7 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
|
|
|
361
439
|
*/
|
|
362
440
|
public addOauthProvider = async (
|
|
363
441
|
params: AddOauthProviderParams,
|
|
364
|
-
): Promise<
|
|
442
|
+
): Promise<OauthProviderInfo> => {
|
|
365
443
|
if (!this.user) {
|
|
366
444
|
throw new NotAuthenticatedError();
|
|
367
445
|
}
|
|
@@ -375,7 +453,47 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
|
|
|
375
453
|
oauthProviders: [{ providerName, oidcToken }],
|
|
376
454
|
},
|
|
377
455
|
});
|
|
378
|
-
await this.request("/v1/add-oauth-provider", {
|
|
456
|
+
const response = await this.request("/v1/add-oauth-provider", {
|
|
457
|
+
stampedRequest,
|
|
458
|
+
});
|
|
459
|
+
return response.oauthProviders[0];
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Deletes a specified OAuth provider for the authenticated user.
|
|
464
|
+
*
|
|
465
|
+
* @param {string} providerId The ID of the provider to be deleted
|
|
466
|
+
* @throws {NotAuthenticatedError} If the user is not authenticated
|
|
467
|
+
*/
|
|
468
|
+
public removeOauthProvider = async (providerId: string) => {
|
|
469
|
+
if (!this.user) {
|
|
470
|
+
throw new NotAuthenticatedError();
|
|
471
|
+
}
|
|
472
|
+
const stampedRequest = await this.turnkeyClient.stampDeleteOauthProviders({
|
|
473
|
+
type: "ACTIVITY_TYPE_DELETE_OAUTH_PROVIDERS",
|
|
474
|
+
timestampMs: Date.now().toString(),
|
|
475
|
+
organizationId: this.user.orgId,
|
|
476
|
+
parameters: {
|
|
477
|
+
userId: this.user.userId,
|
|
478
|
+
providerIds: [providerId],
|
|
479
|
+
},
|
|
480
|
+
});
|
|
481
|
+
await this.request("/v1/remove-oauth-provider", { stampedRequest });
|
|
482
|
+
};
|
|
483
|
+
|
|
484
|
+
/**
|
|
485
|
+
* Retrieves the list of authentication methods for the current user.
|
|
486
|
+
*
|
|
487
|
+
* @returns {Promise<AuthMethods>} A promise that resolves to the list of authentication methods
|
|
488
|
+
* @throws {NotAuthenticatedError} If the user is not authenticated
|
|
489
|
+
*/
|
|
490
|
+
public listAuthMethods = async (): Promise<AuthMethods> => {
|
|
491
|
+
if (!this.user) {
|
|
492
|
+
throw new NotAuthenticatedError();
|
|
493
|
+
}
|
|
494
|
+
return await this.request("/v1/list-auth-methods", {
|
|
495
|
+
suborgId: this.user.orgId,
|
|
496
|
+
});
|
|
379
497
|
};
|
|
380
498
|
|
|
381
499
|
/**
|
|
@@ -961,6 +1079,7 @@ export abstract class BaseSignerClient<TExportWalletParams = unknown> {
|
|
|
961
1079
|
: redirectUrl
|
|
962
1080
|
: undefined,
|
|
963
1081
|
openerOrigin: mode === "popup" ? window.location.origin : undefined,
|
|
1082
|
+
fetchIdTokenOnly: oauthParams.fetchIdTokenOnly,
|
|
964
1083
|
};
|
|
965
1084
|
const state = base64UrlEncode(
|
|
966
1085
|
new TextEncoder().encode(JSON.stringify(stateObject)),
|
package/src/client/index.ts
CHANGED
|
@@ -18,6 +18,7 @@ import type {
|
|
|
18
18
|
SubmitOtpCodeResponse,
|
|
19
19
|
AuthLinkingPrompt,
|
|
20
20
|
GetWebAuthnAttestationResult,
|
|
21
|
+
IdTokenOnly,
|
|
21
22
|
} from "./types.js";
|
|
22
23
|
import { MfaRequiredError } from "../errors.js";
|
|
23
24
|
import { parseMfaError } from "../utils/parseMfaError.js";
|
|
@@ -381,7 +382,7 @@ export class AlchemySignerWebClient extends BaseSignerClient<ExportWalletParams>
|
|
|
381
382
|
*/
|
|
382
383
|
public override oauthWithRedirect = async (
|
|
383
384
|
args: Extract<AuthParams, { type: "oauth"; mode: "redirect" }>,
|
|
384
|
-
): Promise<
|
|
385
|
+
): Promise<User | IdTokenOnly> => {
|
|
385
386
|
const turnkeyPublicKey = await this.initSessionStamper();
|
|
386
387
|
|
|
387
388
|
const oauthParams = args;
|
|
@@ -425,7 +426,7 @@ export class AlchemySignerWebClient extends BaseSignerClient<ExportWalletParams>
|
|
|
425
426
|
*/
|
|
426
427
|
public override oauthWithPopup = async (
|
|
427
428
|
args: Extract<AuthParams, { type: "oauth"; mode: "popup" }>,
|
|
428
|
-
): Promise<User | AuthLinkingPrompt> => {
|
|
429
|
+
): Promise<User | AuthLinkingPrompt | IdTokenOnly> => {
|
|
429
430
|
const turnkeyPublicKey = await this.initSessionStamper();
|
|
430
431
|
const oauthParams = args;
|
|
431
432
|
const providerUrl = await this.getOauthProviderUrl({
|
|
@@ -491,6 +492,13 @@ export class AlchemySignerWebClient extends BaseSignerClient<ExportWalletParams>
|
|
|
491
492
|
orgId,
|
|
492
493
|
} satisfies AuthLinkingPrompt);
|
|
493
494
|
break;
|
|
495
|
+
case "FETCHED_ID_TOKEN_ONLY":
|
|
496
|
+
resolve({
|
|
497
|
+
status,
|
|
498
|
+
idToken,
|
|
499
|
+
providerName,
|
|
500
|
+
} satisfies IdTokenOnly);
|
|
501
|
+
break;
|
|
494
502
|
default:
|
|
495
503
|
reject(new Error(`Unknown status: ${status}`));
|
|
496
504
|
}
|
package/src/client/types.ts
CHANGED
|
@@ -59,6 +59,7 @@ export type EmailAuthParams = {
|
|
|
59
59
|
|
|
60
60
|
export type OauthParams = Extract<AuthParams, { type: "oauth" }> & {
|
|
61
61
|
expirationSeconds?: number;
|
|
62
|
+
fetchIdTokenOnly?: boolean;
|
|
62
63
|
};
|
|
63
64
|
|
|
64
65
|
export type OtpParams = {
|
|
@@ -171,13 +172,32 @@ export type SignerEndpoints = [
|
|
|
171
172
|
signature: Hex;
|
|
172
173
|
};
|
|
173
174
|
},
|
|
175
|
+
{
|
|
176
|
+
Route: "/v1/update-email-auth";
|
|
177
|
+
Body: {
|
|
178
|
+
stampedRequest: TSignedRequest;
|
|
179
|
+
};
|
|
180
|
+
Response: void;
|
|
181
|
+
},
|
|
174
182
|
{
|
|
175
183
|
Route: "/v1/add-oauth-provider";
|
|
176
184
|
Body: {
|
|
177
185
|
stampedRequest: TSignedRequest;
|
|
178
186
|
};
|
|
187
|
+
Response: { oauthProviders: OauthProviderInfo[] };
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
Route: "/v1/remove-oauth-provider";
|
|
191
|
+
Body: {
|
|
192
|
+
stampedRequest: TSignedRequest;
|
|
193
|
+
};
|
|
179
194
|
Response: void;
|
|
180
195
|
},
|
|
196
|
+
{
|
|
197
|
+
Route: "/v1/list-auth-methods";
|
|
198
|
+
Body: {};
|
|
199
|
+
Response: AuthMethods;
|
|
200
|
+
},
|
|
181
201
|
{
|
|
182
202
|
Route: "/v1/prepare-oauth";
|
|
183
203
|
Body: {
|
|
@@ -278,6 +298,12 @@ export type AuthLinkingPrompt = {
|
|
|
278
298
|
orgId: string;
|
|
279
299
|
};
|
|
280
300
|
|
|
301
|
+
export type IdTokenOnly = {
|
|
302
|
+
status: "FETCHED_ID_TOKEN_ONLY";
|
|
303
|
+
idToken: string;
|
|
304
|
+
providerName: string;
|
|
305
|
+
};
|
|
306
|
+
|
|
281
307
|
export type OauthState = {
|
|
282
308
|
authProviderId: string;
|
|
283
309
|
isCustomProvider?: boolean;
|
|
@@ -286,6 +312,7 @@ export type OauthState = {
|
|
|
286
312
|
expirationSeconds?: number;
|
|
287
313
|
redirectUrl?: string;
|
|
288
314
|
openerOrigin?: string;
|
|
315
|
+
fetchIdTokenOnly?: boolean;
|
|
289
316
|
};
|
|
290
317
|
|
|
291
318
|
export type GetOauthProviderUrlArgs = {
|
|
@@ -345,6 +372,25 @@ export type AddOauthProviderParams = {
|
|
|
345
372
|
oidcToken: string;
|
|
346
373
|
};
|
|
347
374
|
|
|
375
|
+
export type AuthMethods = {
|
|
376
|
+
email?: string;
|
|
377
|
+
oauthProviders: OauthProviderInfo[];
|
|
378
|
+
passkeys: PasskeyInfo[];
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
export type OauthProviderInfo = {
|
|
382
|
+
providerId: string;
|
|
383
|
+
issuer: string;
|
|
384
|
+
providerName?: string;
|
|
385
|
+
userDisplayName?: string;
|
|
386
|
+
};
|
|
387
|
+
|
|
388
|
+
export type PasskeyInfo = {
|
|
389
|
+
authenticatorId: string;
|
|
390
|
+
name: string;
|
|
391
|
+
createdAt: number;
|
|
392
|
+
};
|
|
393
|
+
|
|
348
394
|
export type experimental_CreateApiKeyParams = {
|
|
349
395
|
name: string;
|
|
350
396
|
publicKey: string;
|
package/src/version.ts
CHANGED