verify method
Implementation
Future<Session> verify(String token, {Context? ctx}) async {
await ready();
if (token.isEmpty) {
throw Status.unauthorized.err();
}
_setState(_state.copyWith(authenticating: true));
try {
final accessToken = await _tokenizer.verify(token, ctx: ctx);
final accessKey = accessToken?.token ?? '';
if (accessKey.isEmpty) {
throw Status.unauthorized.err();
}
final session = await _tokenizer.authenticate(
accessKey,
ctx: _withToken(ctx, accessKey),
);
if (session == null) {
throw Status.unauthorized.err();
}
await _persist(
token: accessKey,
session: session,
expiresAt: accessToken?.expiresAt,
);
_setState(
_state.copyWith(
ready: true,
session: session,
expiresAt: accessToken?.expiresAt,
authenticating: false,
),
);
return session;
} catch (_) {
_setState(_state.copyWith(authenticating: false));
rethrow;
}
}