31 lines
1.0 KiB
Dart
31 lines
1.0 KiB
Dart
import 'package:dio/dio.dart';
|
|
|
|
import '../../../errors/auth_exception.dart';
|
|
import '../../auth/token_storage.dart';
|
|
import '../../marianumconnect_api.dart';
|
|
import '../../marianumconnect_query.dart';
|
|
|
|
/// Probes that the stored bearer token is still accepted. Used for accounts
|
|
/// without a password (guardians), whose token cannot be renewed silently.
|
|
///
|
|
/// Bypasses the shared dio singleton so the auth interceptor does not react
|
|
/// to the 401 this probe is meant to observe.
|
|
class AuthMe extends MarianumConnectQuery {
|
|
final MarianumConnectTokenStorage _tokenStorage;
|
|
|
|
AuthMe({
|
|
MarianumConnectTokenStorage tokenStorage =
|
|
const MarianumConnectTokenStorage(),
|
|
Dio? dio,
|
|
}) : _tokenStorage = tokenStorage,
|
|
super(dio: dio ?? MarianumConnectApi.plainDio());
|
|
|
|
/// Throws [AuthException] when the token is missing or rejected.
|
|
Future<void> run() async {
|
|
final options = await _tokenStorage.requireBearerOptions('AuthMe');
|
|
return guard(() async {
|
|
await dio.get<void>(endpoint('auth/me'), options: options);
|
|
});
|
|
}
|
|
}
|