Skip to content

Commit 6b65780

Browse files
authored
feat(passport): store tokens (#2669)
1 parent 8a368cb commit 6b65780

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

packages/passport/sdk/src/Passport.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import MagicAdapter from './magic/magicAdapter';
1515
import { PassportImxProviderFactory } from './starkEx';
1616
import { PassportConfiguration } from './config';
1717
import {
18+
DeviceTokenResponse,
1819
DirectLoginMethod,
1920
isUserImx,
2021
isUserZkEvm,
@@ -299,6 +300,14 @@ export class Passport {
299300
}, 'loginWithPKCEFlowCallback');
300301
}
301302

303+
public async storeTokens(tokenResponse: DeviceTokenResponse): Promise<UserProfile> {
304+
return withMetricsAsync(async () => {
305+
const user = await this.authManager.storeTokens(tokenResponse);
306+
this.passportEventEmitter.emit(PassportEvents.LOGGED_IN, user);
307+
return user.profile;
308+
}, 'storeTokens');
309+
}
310+
302311
/**
303312
* Logs out the current user.
304313
* @returns {Promise<void>} A promise that resolves when the logout is complete

packages/passport/sdk/src/authManager.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,16 @@ export default class AuthManager {
353353
return response.data;
354354
}
355355

356+
public async storeTokens(tokenResponse: DeviceTokenResponse): Promise<User> {
357+
return withPassportError<User>(async () => {
358+
const oidcUser = AuthManager.mapDeviceTokenResponseToOidcUser(tokenResponse);
359+
const user = AuthManager.mapOidcUserToDomainModel(oidcUser);
360+
await this.userManager.storeUser(oidcUser);
361+
362+
return user;
363+
}, PassportErrorType.AUTHENTICATION_ERROR);
364+
}
365+
356366
public async logout(): Promise<void> {
357367
return withPassportError<void>(async () => {
358368
await this.userManager.revokeTokens(['refresh_token']);

0 commit comments

Comments
 (0)