@hatkom/aws-auth 1.4.5 → 1.5.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/CHANGELOG.md +7 -0
- package/README.md +20 -1
- package/dist/auth.d.ts +9 -1
- package/dist/auth.js +14 -4
- package/dist/auth.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [1.5.0](https://github.com/Hatkom-io/aws-auth/compare/v1.4.5...v1.5.0) (2026-09-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* adopt external session, select token use ([3b70040](https://github.com/Hatkom-io/aws-auth/commit/3b700408cf5e3675b330073eb867524c458ccd1b))
|
|
7
|
+
|
|
1
8
|
## [1.4.5](https://github.com/Hatkom-io/aws-auth/compare/v1.4.4...v1.4.5) (2026-03-24)
|
|
2
9
|
|
|
3
10
|
|
package/README.md
CHANGED
|
@@ -20,6 +20,10 @@ const session = await auth.authenticateUser({ email: 'user@example.com', passwor
|
|
|
20
20
|
|
|
21
21
|
// Get current session token (auto-refreshes if expired)
|
|
22
22
|
const token = await auth.getCurrentSessionToken()
|
|
23
|
+
const idToken = await auth.getCurrentSessionToken('id')
|
|
24
|
+
|
|
25
|
+
// Adopt a session obtained elsewhere (e.g. a server-mediated sign-in)
|
|
26
|
+
await auth.adoptSession({ username, idToken, accessToken, refreshToken })
|
|
23
27
|
|
|
24
28
|
// Sign out
|
|
25
29
|
await auth.signOut()
|
|
@@ -28,10 +32,25 @@ await auth.signOut()
|
|
|
28
32
|
## API
|
|
29
33
|
|
|
30
34
|
- `authenticateUser({ email, password })` — sign in, returns session or `'new-password-required'`
|
|
31
|
-
- `getCurrentSessionToken()` — returns current
|
|
35
|
+
- `getCurrentSessionToken(tokenUse?)` — returns the current JWT, refreshing if needed. `tokenUse` is `'access'` (default) or `'id'`
|
|
36
|
+
- `adoptSession({ username, idToken, accessToken, refreshToken })` — store a session obtained outside the browser, so the SDK handles renewal, revocation and storage from then on
|
|
32
37
|
- `signOut()` — signs out the current user
|
|
33
38
|
- `completeNewPasswordChallenge({ username, newPassword })` — complete a new password challenge
|
|
34
39
|
- `forgotPassword(username)` — initiate forgot password flow
|
|
35
40
|
- `forgotPasswordSubmit({ username, verificationCode, password })` — submit new password
|
|
36
41
|
- `resendVerificationCode(username)` — resend email verification code
|
|
37
42
|
- `verifyUserEmail({ username, code })` — confirm email registration
|
|
43
|
+
|
|
44
|
+
### `adoptSession`
|
|
45
|
+
|
|
46
|
+
Use it when sign-in happens on your server (`InitiateAuth` / `RespondToAuthChallenge`) and the
|
|
47
|
+
browser receives a finished `AuthenticationResult`. The tokens are cached under the same storage
|
|
48
|
+
keys a browser-side login writes, so `getCurrentSessionToken()`, refresh and `signOut()` all work
|
|
49
|
+
afterwards, including across a page reload.
|
|
50
|
+
|
|
51
|
+
`username` must be the **Cognito username**, not the e-mail. A pool configured with
|
|
52
|
+
`usernameAttributes: ['email']` generates a UUID internal username, and the cache keys are built
|
|
53
|
+
from it — passing the e-mail leaves nothing findable on the next page load.
|
|
54
|
+
|
|
55
|
+
If your API authorizes on e-mail, read the ID token (`getCurrentSessionToken('id')`): with a
|
|
56
|
+
UUID username the access token carries no `email` claim.
|
package/dist/auth.d.ts
CHANGED
|
@@ -16,6 +16,13 @@ type CompleteNewPasswordChallengeArgs = {
|
|
|
16
16
|
username: string;
|
|
17
17
|
newPassword: string;
|
|
18
18
|
};
|
|
19
|
+
type AdoptSessionArgs = {
|
|
20
|
+
username: string;
|
|
21
|
+
idToken: string;
|
|
22
|
+
accessToken: string;
|
|
23
|
+
refreshToken: string;
|
|
24
|
+
};
|
|
25
|
+
type TokenUse = 'access' | 'id';
|
|
19
26
|
declare class AWSAuthClient {
|
|
20
27
|
private userPool;
|
|
21
28
|
private syncStoragePromise;
|
|
@@ -27,7 +34,8 @@ declare class AWSAuthClient {
|
|
|
27
34
|
forgotPassword: (username: string) => Promise<unknown>;
|
|
28
35
|
forgotPasswordSubmit: ({ username, verificationCode, password, }: ForgotPasswordSubmitArgs) => Promise<unknown>;
|
|
29
36
|
authenticateUser: ({ email, password }: AuthenticateUserArgs) => Promise<CognitoUserSession | "new-password-required">;
|
|
30
|
-
|
|
37
|
+
adoptSession: ({ username, idToken, accessToken, refreshToken, }: AdoptSessionArgs) => Promise<void>;
|
|
38
|
+
getCurrentSessionToken: (tokenUse?: TokenUse) => Promise<string | null>;
|
|
31
39
|
private isValid;
|
|
32
40
|
private cognitoUser;
|
|
33
41
|
}
|
package/dist/auth.js
CHANGED
|
@@ -7,6 +7,7 @@ const needsToSyncStorage = (userPool) => !!('storage' in userPool &&
|
|
|
7
7
|
typeof userPool.storage === 'function' &&
|
|
8
8
|
'sync' in userPool.storage &&
|
|
9
9
|
typeof userPool.storage.sync === 'function');
|
|
10
|
+
const getToken = (session, tokenUse) => tokenUse === 'id' ? session.getIdToken() : session.getAccessToken();
|
|
10
11
|
class AWSAuthClient {
|
|
11
12
|
userPool;
|
|
12
13
|
syncStoragePromise;
|
|
@@ -104,7 +105,15 @@ class AWSAuthClient {
|
|
|
104
105
|
});
|
|
105
106
|
});
|
|
106
107
|
};
|
|
107
|
-
|
|
108
|
+
adoptSession = async ({ username, idToken, accessToken, refreshToken, }) => {
|
|
109
|
+
await this.syncStoragePromise;
|
|
110
|
+
this.cognitoUser(username).setSignInUserSession(new amazon_cognito_identity_js_1.CognitoUserSession({
|
|
111
|
+
IdToken: new amazon_cognito_identity_js_1.CognitoIdToken({ IdToken: idToken }),
|
|
112
|
+
AccessToken: new amazon_cognito_identity_js_1.CognitoAccessToken({ AccessToken: accessToken }),
|
|
113
|
+
RefreshToken: new amazon_cognito_identity_js_1.CognitoRefreshToken({ RefreshToken: refreshToken }),
|
|
114
|
+
}));
|
|
115
|
+
};
|
|
116
|
+
getCurrentSessionToken = async (tokenUse = 'access') => {
|
|
108
117
|
await this.syncStoragePromise;
|
|
109
118
|
const currentUser = this.userPool.getCurrentUser();
|
|
110
119
|
if (!currentUser) {
|
|
@@ -120,9 +129,10 @@ class AWSAuthClient {
|
|
|
120
129
|
}
|
|
121
130
|
});
|
|
122
131
|
});
|
|
123
|
-
const
|
|
132
|
+
const currentToken = getToken(session, tokenUse);
|
|
133
|
+
const valid = this.isValid(currentToken.getExpiration());
|
|
124
134
|
if (valid) {
|
|
125
|
-
return
|
|
135
|
+
return currentToken.getJwtToken();
|
|
126
136
|
}
|
|
127
137
|
const updatedSession = await new Promise((resolve, reject) => {
|
|
128
138
|
currentUser.refreshSession(session.getRefreshToken(), (error, value) => {
|
|
@@ -134,7 +144,7 @@ class AWSAuthClient {
|
|
|
134
144
|
}
|
|
135
145
|
});
|
|
136
146
|
});
|
|
137
|
-
return updatedSession
|
|
147
|
+
return getToken(updatedSession, tokenUse).getJwtToken();
|
|
138
148
|
};
|
|
139
149
|
isValid = (tokenExpiration) => {
|
|
140
150
|
const now = Math.floor(new Date().getTime() / 1000);
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|