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 run() async { final options = await _tokenStorage.requireBearerOptions('AuthMe'); return guard(() async { await dio.get(endpoint('auth/me'), options: options); }); } }