Skip to content

Commit 4471fc6

Browse files
authored
feat: Add clearAccessToken method to LogtoClient (#80)
1 parent 70071b3 commit 4471fc6

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

lib/logto_client.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,12 @@ class LogtoClient {
189189
}
190190
}
191191

192+
// Clear the access token by resource indicator or organizationId.
193+
Future<void> clearAccessToken({String? resource, String? organizationId}) {
194+
return _tokenStorage.deleteAccessToken(
195+
resource: resource, organizationId: organizationId);
196+
}
197+
192198
// Sign in using the PKCE flow.
193199
Future<void> signIn(
194200
String redirectUri, {

lib/src/modules/token_storage.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,16 @@ class TokenStorage {
110110
return accessToken;
111111
}
112112

113+
Future<void> deleteAccessToken({
114+
String? resource,
115+
String? organizationId,
116+
}) async {
117+
final key =
118+
buildAccessTokenKey(resource: resource, organizationId: organizationId);
119+
120+
await _deleteAccessToken(key);
121+
}
122+
113123
Future<void> _deleteAccessToken(String accessTokenKey) async {
114124
final Map<String, AccessToken> tempAccessTokenMap =
115125
Map.from(_accessTokenMap ?? {});

test/modules/token_storage_test.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,5 +170,20 @@ void main() {
170170
expect(
171171
await storageStrategy.read(key: _TokenStorageKeys.idTokenKey), null);
172172
});
173+
174+
test('deleteAccessToken method should delete persisted state', () async {
175+
await sut.save(
176+
idToken: idToken,
177+
accessToken: accessToken,
178+
refreshToken: refreshToken,
179+
expiresIn: 1);
180+
181+
await sut.setAccessToken('tokenX', resource: resource, expiresIn: 3600);
182+
expect(await sut.getAccessToken(resource: resource), isNotNull);
183+
184+
await sut.deleteAccessToken(resource: resource);
185+
186+
expect(await sut.getAccessToken(resource: resource), null);
187+
});
173188
});
174189
}

0 commit comments

Comments
 (0)