@fnd-platform/cognito-auth 1.0.0-alpha.1 → 1.0.0-alpha.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/lib/client/auth-client.d.ts +151 -94
- package/lib/client/auth-client.d.ts.map +1 -1
- package/lib/client/auth-client.js +330 -209
- package/lib/client/auth-client.js.map +1 -1
- package/lib/client/errors.d.ts +45 -23
- package/lib/client/errors.d.ts.map +1 -1
- package/lib/client/errors.js +80 -38
- package/lib/client/errors.js.map +1 -1
- package/lib/client/index.js +8 -23
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/jwt.js +27 -27
- package/lib/remix/session.server.d.ts.map +1 -1
- package/lib/remix/session.server.js +98 -95
- package/lib/remix/session.server.js.map +1 -1
- package/lib/types.d.ts +140 -106
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +3 -3
- package/package.json +9 -9
- package/LICENSE +0 -21
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* Cognito authentication client for frontend applications.
|
|
4
4
|
*
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
|
-
Object.defineProperty(exports,
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.FndAuthClient = void 0;
|
|
12
12
|
exports.clearClientCache = clearClientCache;
|
|
13
|
-
const client_cognito_identity_provider_1 = require(
|
|
14
|
-
const errors_js_1 = require(
|
|
13
|
+
const client_cognito_identity_provider_1 = require("@aws-sdk/client-cognito-identity-provider");
|
|
14
|
+
const errors_js_1 = require("./errors.js");
|
|
15
15
|
/**
|
|
16
16
|
* Cache for Cognito clients keyed by configuration.
|
|
17
17
|
*/
|
|
@@ -20,27 +20,27 @@ const clientCache = new Map();
|
|
|
20
20
|
* Generates a cache key for the given configuration.
|
|
21
21
|
*/
|
|
22
22
|
function getCacheKey(config) {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
const region = config.region ?? process.env.AWS_REGION ?? 'us-east-1';
|
|
24
|
+
return `${config.userPoolId}:${config.clientId}:${region}`;
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Gets or creates a Cognito client for the given configuration.
|
|
28
28
|
*/
|
|
29
29
|
function getClient(config) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
const key = getCacheKey(config);
|
|
31
|
+
let client = clientCache.get(key);
|
|
32
|
+
if (!client) {
|
|
33
|
+
const region = config.region ?? process.env.AWS_REGION ?? 'us-east-1';
|
|
34
|
+
client = new client_cognito_identity_provider_1.CognitoIdentityProviderClient({ region });
|
|
35
|
+
clientCache.set(key, client);
|
|
36
|
+
}
|
|
37
|
+
return client;
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Clears the client cache. Useful for testing.
|
|
41
41
|
*/
|
|
42
42
|
function clearClientCache() {
|
|
43
|
-
|
|
43
|
+
clientCache.clear();
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Cognito authentication client for frontend applications.
|
|
@@ -66,205 +66,326 @@ function clearClientCache() {
|
|
|
66
66
|
* ```
|
|
67
67
|
*/
|
|
68
68
|
class FndAuthClient {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Signs in a user with email and password.
|
|
82
|
-
*
|
|
83
|
-
* @param email - User's email address
|
|
84
|
-
* @param password - User's password
|
|
85
|
-
* @returns Authentication tokens
|
|
86
|
-
* @throws {AuthError} If authentication fails
|
|
87
|
-
*
|
|
88
|
-
* @example
|
|
89
|
-
* ```typescript
|
|
90
|
-
* try {
|
|
91
|
-
* const tokens = await authClient.signIn('user@example.com', 'password');
|
|
92
|
-
* console.log('Logged in!', tokens.accessToken);
|
|
93
|
-
* } catch (error) {
|
|
94
|
-
* if (error instanceof AuthError && error.code === 'USER_NOT_CONFIRMED') {
|
|
95
|
-
* // Redirect to confirmation page
|
|
96
|
-
* }
|
|
97
|
-
* }
|
|
98
|
-
* ```
|
|
99
|
-
*/
|
|
100
|
-
async signIn(email, password) {
|
|
101
|
-
try {
|
|
102
|
-
const result = await this.client.send(
|
|
103
|
-
new client_cognito_identity_provider_1.InitiateAuthCommand({
|
|
104
|
-
AuthFlow: client_cognito_identity_provider_1.AuthFlowType.USER_PASSWORD_AUTH,
|
|
105
|
-
ClientId: this.clientId,
|
|
106
|
-
AuthParameters: {
|
|
107
|
-
USERNAME: email,
|
|
108
|
-
PASSWORD: password,
|
|
109
|
-
},
|
|
110
|
-
})
|
|
111
|
-
);
|
|
112
|
-
if (!result.AuthenticationResult) {
|
|
113
|
-
throw new Error('Authentication failed - no result returned');
|
|
114
|
-
}
|
|
115
|
-
const { AccessToken, IdToken, RefreshToken, ExpiresIn } = result.AuthenticationResult;
|
|
116
|
-
if (!AccessToken || !IdToken || !RefreshToken) {
|
|
117
|
-
throw new Error('Authentication failed - missing tokens');
|
|
118
|
-
}
|
|
119
|
-
return {
|
|
120
|
-
accessToken: AccessToken,
|
|
121
|
-
idToken: IdToken,
|
|
122
|
-
refreshToken: RefreshToken,
|
|
123
|
-
expiresIn: ExpiresIn ?? 3600,
|
|
124
|
-
};
|
|
125
|
-
} catch (error) {
|
|
126
|
-
throw (0, errors_js_1.mapCognitoError)(error, 'Sign in failed');
|
|
69
|
+
client;
|
|
70
|
+
clientId;
|
|
71
|
+
/**
|
|
72
|
+
* Creates a new FndAuthClient.
|
|
73
|
+
*
|
|
74
|
+
* @param config - Configuration for the auth client
|
|
75
|
+
*/
|
|
76
|
+
constructor(config) {
|
|
77
|
+
this.client = getClient(config);
|
|
78
|
+
this.clientId = config.clientId;
|
|
127
79
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Signs in a user with email and password.
|
|
82
|
+
*
|
|
83
|
+
* @param email - User's email address
|
|
84
|
+
* @param password - User's password
|
|
85
|
+
* @returns Authentication tokens
|
|
86
|
+
* @throws {AuthError} If authentication fails
|
|
87
|
+
* @throws {NewPasswordRequiredError} If user must change password first
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* try {
|
|
92
|
+
* const tokens = await authClient.signIn('user@example.com', 'password');
|
|
93
|
+
* console.log('Logged in!', tokens.accessToken);
|
|
94
|
+
* } catch (error) {
|
|
95
|
+
* if (error instanceof NewPasswordRequiredError) {
|
|
96
|
+
* // Redirect to change password page
|
|
97
|
+
* redirect(`/change-password?session=${error.session}&email=${email}`);
|
|
98
|
+
* } else if (error instanceof AuthError && error.code === 'USER_NOT_CONFIRMED') {
|
|
99
|
+
* // Redirect to confirmation page
|
|
100
|
+
* }
|
|
101
|
+
* }
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
async signIn(email, password) {
|
|
105
|
+
try {
|
|
106
|
+
const result = await this.client.send(new client_cognito_identity_provider_1.InitiateAuthCommand({
|
|
107
|
+
AuthFlow: client_cognito_identity_provider_1.AuthFlowType.USER_PASSWORD_AUTH,
|
|
108
|
+
ClientId: this.clientId,
|
|
109
|
+
AuthParameters: {
|
|
110
|
+
USERNAME: email,
|
|
111
|
+
PASSWORD: password,
|
|
112
|
+
},
|
|
113
|
+
}));
|
|
114
|
+
// Check if a challenge is required (e.g., NEW_PASSWORD_REQUIRED)
|
|
115
|
+
if (result.ChallengeName === client_cognito_identity_provider_1.ChallengeNameType.NEW_PASSWORD_REQUIRED) {
|
|
116
|
+
if (!result.Session) {
|
|
117
|
+
throw new Error('Challenge returned without session');
|
|
118
|
+
}
|
|
119
|
+
throw new errors_js_1.NewPasswordRequiredError(result.Session, email);
|
|
120
|
+
}
|
|
121
|
+
if (!result.AuthenticationResult) {
|
|
122
|
+
throw new Error('Authentication failed - no result returned');
|
|
167
123
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
124
|
+
const { AccessToken, IdToken, RefreshToken, ExpiresIn } = result.AuthenticationResult;
|
|
125
|
+
if (!AccessToken || !IdToken || !RefreshToken) {
|
|
126
|
+
throw new Error('Authentication failed - missing tokens');
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
accessToken: AccessToken,
|
|
130
|
+
idToken: IdToken,
|
|
131
|
+
refreshToken: RefreshToken,
|
|
132
|
+
expiresIn: ExpiresIn ?? 3600,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
// Re-throw NewPasswordRequiredError without wrapping
|
|
137
|
+
if (error instanceof errors_js_1.NewPasswordRequiredError) {
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
throw (0, errors_js_1.mapCognitoError)(error, 'Sign in failed');
|
|
141
|
+
}
|
|
172
142
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
143
|
+
/**
|
|
144
|
+
* Completes password change for users with FORCE_CHANGE_PASSWORD status.
|
|
145
|
+
*
|
|
146
|
+
* Use this after catching NewPasswordRequiredError from signIn().
|
|
147
|
+
*
|
|
148
|
+
* @param email - User's email address
|
|
149
|
+
* @param newPassword - New password to set
|
|
150
|
+
* @param session - Session token from NewPasswordRequiredError
|
|
151
|
+
* @returns Authentication tokens
|
|
152
|
+
* @throws {AuthError} If password change fails
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* // After catching NewPasswordRequiredError
|
|
157
|
+
* const tokens = await authClient.completeNewPassword(
|
|
158
|
+
* email,
|
|
159
|
+
* newPassword,
|
|
160
|
+
* error.session
|
|
161
|
+
* );
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
async completeNewPassword(email, newPassword, session) {
|
|
165
|
+
try {
|
|
166
|
+
const result = await this.client.send(new client_cognito_identity_provider_1.RespondToAuthChallengeCommand({
|
|
167
|
+
ClientId: this.clientId,
|
|
168
|
+
ChallengeName: client_cognito_identity_provider_1.ChallengeNameType.NEW_PASSWORD_REQUIRED,
|
|
169
|
+
Session: session,
|
|
170
|
+
ChallengeResponses: {
|
|
171
|
+
USERNAME: email,
|
|
172
|
+
NEW_PASSWORD: newPassword,
|
|
173
|
+
},
|
|
174
|
+
}));
|
|
175
|
+
if (!result.AuthenticationResult) {
|
|
176
|
+
throw new Error('Password change failed - no result returned');
|
|
177
|
+
}
|
|
178
|
+
const { AccessToken, IdToken, RefreshToken, ExpiresIn } = result.AuthenticationResult;
|
|
179
|
+
if (!AccessToken || !IdToken || !RefreshToken) {
|
|
180
|
+
throw new Error('Password change failed - missing tokens');
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
accessToken: AccessToken,
|
|
184
|
+
idToken: IdToken,
|
|
185
|
+
refreshToken: RefreshToken,
|
|
186
|
+
expiresIn: ExpiresIn ?? 3600,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
throw (0, errors_js_1.mapCognitoError)(error, 'Password change failed');
|
|
191
|
+
}
|
|
198
192
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
193
|
+
/**
|
|
194
|
+
* Initiates forgot password flow.
|
|
195
|
+
*
|
|
196
|
+
* Sends a verification code to the user's email for password reset.
|
|
197
|
+
*
|
|
198
|
+
* @param email - User's email address
|
|
199
|
+
* @returns Delivery details for the reset code
|
|
200
|
+
* @throws {AuthError} If request fails
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* ```typescript
|
|
204
|
+
* const result = await authClient.forgotPassword('user@example.com');
|
|
205
|
+
* console.log(`Code sent to ${result.codeDeliveryDetails?.destination}`);
|
|
206
|
+
* ```
|
|
207
|
+
*/
|
|
208
|
+
async forgotPassword(email) {
|
|
209
|
+
try {
|
|
210
|
+
const result = await this.client.send(new client_cognito_identity_provider_1.ForgotPasswordCommand({
|
|
211
|
+
ClientId: this.clientId,
|
|
212
|
+
Username: email,
|
|
213
|
+
}));
|
|
214
|
+
return {
|
|
215
|
+
codeDeliveryDetails: result.CodeDeliveryDetails
|
|
216
|
+
? {
|
|
217
|
+
destination: result.CodeDeliveryDetails.Destination,
|
|
218
|
+
deliveryMedium: result.CodeDeliveryDetails.DeliveryMedium,
|
|
219
|
+
}
|
|
220
|
+
: undefined,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
throw (0, errors_js_1.mapCognitoError)(error, 'Forgot password request failed');
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Completes forgot password flow with verification code.
|
|
229
|
+
*
|
|
230
|
+
* @param email - User's email address
|
|
231
|
+
* @param code - Verification code from email
|
|
232
|
+
* @param newPassword - New password to set
|
|
233
|
+
* @throws {AuthError} If password reset fails
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```typescript
|
|
237
|
+
* await authClient.confirmForgotPassword('user@example.com', '123456', 'NewP@ssw0rd');
|
|
238
|
+
* // User can now sign in with new password
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
async confirmForgotPassword(email, code, newPassword) {
|
|
242
|
+
try {
|
|
243
|
+
await this.client.send(new client_cognito_identity_provider_1.ConfirmForgotPasswordCommand({
|
|
244
|
+
ClientId: this.clientId,
|
|
245
|
+
Username: email,
|
|
246
|
+
ConfirmationCode: code,
|
|
247
|
+
Password: newPassword,
|
|
248
|
+
}));
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
throw (0, errors_js_1.mapCognitoError)(error, 'Password reset failed');
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Signs up a new user.
|
|
256
|
+
*
|
|
257
|
+
* @param email - User's email address
|
|
258
|
+
* @param password - User's password
|
|
259
|
+
* @param name - Optional user's name
|
|
260
|
+
* @returns Sign-up result with confirmation status
|
|
261
|
+
* @throws {AuthError} If sign-up fails
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* ```typescript
|
|
265
|
+
* const result = await authClient.signUp('user@example.com', 'password', 'John Doe');
|
|
266
|
+
* if (!result.userConfirmed) {
|
|
267
|
+
* // Show confirmation code input
|
|
268
|
+
* console.log(`Code sent to ${result.codeDeliveryDetails?.destination}`);
|
|
269
|
+
* }
|
|
270
|
+
* ```
|
|
271
|
+
*/
|
|
272
|
+
async signUp(email, password, name) {
|
|
273
|
+
try {
|
|
274
|
+
const userAttributes = [{ Name: 'email', Value: email }];
|
|
275
|
+
if (name) {
|
|
276
|
+
userAttributes.push({ Name: 'name', Value: name });
|
|
277
|
+
}
|
|
278
|
+
const result = await this.client.send(new client_cognito_identity_provider_1.SignUpCommand({
|
|
279
|
+
ClientId: this.clientId,
|
|
280
|
+
Username: email,
|
|
281
|
+
Password: password,
|
|
282
|
+
UserAttributes: userAttributes,
|
|
283
|
+
}));
|
|
284
|
+
return {
|
|
285
|
+
userConfirmed: result.UserConfirmed ?? false,
|
|
286
|
+
codeDeliveryDetails: result.CodeDeliveryDetails
|
|
287
|
+
? {
|
|
288
|
+
destination: result.CodeDeliveryDetails.Destination,
|
|
289
|
+
deliveryMedium: result.CodeDeliveryDetails.DeliveryMedium,
|
|
290
|
+
}
|
|
291
|
+
: undefined,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
throw (0, errors_js_1.mapCognitoError)(error, 'Sign up failed');
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Confirms a user's sign-up with the verification code.
|
|
300
|
+
*
|
|
301
|
+
* @param email - User's email address
|
|
302
|
+
* @param code - Verification code from email/SMS
|
|
303
|
+
* @throws {AuthError} If confirmation fails
|
|
304
|
+
*
|
|
305
|
+
* @example
|
|
306
|
+
* ```typescript
|
|
307
|
+
* await authClient.confirmSignUp('user@example.com', '123456');
|
|
308
|
+
* // User is now confirmed, can sign in
|
|
309
|
+
* ```
|
|
310
|
+
*/
|
|
311
|
+
async confirmSignUp(email, code) {
|
|
312
|
+
try {
|
|
313
|
+
await this.client.send(new client_cognito_identity_provider_1.ConfirmSignUpCommand({
|
|
314
|
+
ClientId: this.clientId,
|
|
315
|
+
Username: email,
|
|
316
|
+
ConfirmationCode: code,
|
|
317
|
+
}));
|
|
318
|
+
}
|
|
319
|
+
catch (error) {
|
|
320
|
+
throw (0, errors_js_1.mapCognitoError)(error, 'Confirmation failed');
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Refreshes authentication tokens using a refresh token.
|
|
325
|
+
*
|
|
326
|
+
* @param refreshToken - The refresh token from a previous authentication
|
|
327
|
+
* @returns New authentication tokens
|
|
328
|
+
* @throws {AuthError} If refresh fails
|
|
329
|
+
*
|
|
330
|
+
* @example
|
|
331
|
+
* ```typescript
|
|
332
|
+
* // When access token is about to expire
|
|
333
|
+
* const newTokens = await authClient.refreshTokens(tokens.refreshToken);
|
|
334
|
+
* ```
|
|
335
|
+
*/
|
|
336
|
+
async refreshTokens(refreshToken) {
|
|
337
|
+
try {
|
|
338
|
+
const result = await this.client.send(new client_cognito_identity_provider_1.InitiateAuthCommand({
|
|
339
|
+
AuthFlow: client_cognito_identity_provider_1.AuthFlowType.REFRESH_TOKEN_AUTH,
|
|
340
|
+
ClientId: this.clientId,
|
|
341
|
+
AuthParameters: {
|
|
342
|
+
REFRESH_TOKEN: refreshToken,
|
|
343
|
+
},
|
|
344
|
+
}));
|
|
345
|
+
if (!result.AuthenticationResult) {
|
|
346
|
+
throw new Error('Token refresh failed - no result returned');
|
|
347
|
+
}
|
|
348
|
+
const { AccessToken, IdToken, ExpiresIn } = result.AuthenticationResult;
|
|
349
|
+
if (!AccessToken || !IdToken) {
|
|
350
|
+
throw new Error('Token refresh failed - missing tokens');
|
|
351
|
+
}
|
|
352
|
+
return {
|
|
353
|
+
accessToken: AccessToken,
|
|
354
|
+
idToken: IdToken,
|
|
355
|
+
// Refresh token doesn't change on refresh
|
|
356
|
+
refreshToken: refreshToken,
|
|
357
|
+
expiresIn: ExpiresIn ?? 3600,
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
throw (0, errors_js_1.mapCognitoError)(error, 'Token refresh failed');
|
|
362
|
+
}
|
|
240
363
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
throw (0, errors_js_1.mapCognitoError)(error, 'Sign out failed');
|
|
364
|
+
/**
|
|
365
|
+
* Signs out the user from all devices.
|
|
366
|
+
*
|
|
367
|
+
* This invalidates all refresh tokens for the user, effectively
|
|
368
|
+
* signing them out from all devices.
|
|
369
|
+
*
|
|
370
|
+
* @param accessToken - The user's current access token
|
|
371
|
+
* @throws {AuthError} If sign-out fails
|
|
372
|
+
*
|
|
373
|
+
* @example
|
|
374
|
+
* ```typescript
|
|
375
|
+
* await authClient.signOut(tokens.accessToken);
|
|
376
|
+
* // User is now signed out from all devices
|
|
377
|
+
* ```
|
|
378
|
+
*/
|
|
379
|
+
async signOut(accessToken) {
|
|
380
|
+
try {
|
|
381
|
+
await this.client.send(new client_cognito_identity_provider_1.GlobalSignOutCommand({
|
|
382
|
+
AccessToken: accessToken,
|
|
383
|
+
}));
|
|
384
|
+
}
|
|
385
|
+
catch (error) {
|
|
386
|
+
throw (0, errors_js_1.mapCognitoError)(error, 'Sign out failed');
|
|
387
|
+
}
|
|
266
388
|
}
|
|
267
|
-
}
|
|
268
389
|
}
|
|
269
390
|
exports.FndAuthClient = FndAuthClient;
|
|
270
|
-
//# sourceMappingURL=auth-client.js.map
|
|
391
|
+
//# sourceMappingURL=auth-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-client.js","sourceRoot":"","sources":["../../src/client/auth-client.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;
|
|
1
|
+
{"version":3,"file":"auth-client.js","sourceRoot":"","sources":["../../src/client/auth-client.ts"],"names":[],"mappings":"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"}
|