Untitled

 avatar
unknown
dart
10 months ago
1.5 kB
4
Indexable
Future<String> handleRefreshToken(String token) async {
    if (authBloc.userDataModel != null) {
      final DateTime expiresToken =
          DateTime.parse(authBloc.userDataModel!.expiresToken);
      final DateTime date2 = DateTime.now().toUtc();
      final bool difference = date2.difference(expiresToken).isNegative;
      if (!difference) {
        Map<String, dynamic> body = <String, dynamic>{
          'refreshToken': authBloc.userDataModel!.refreshToken
        };
        final Response response = await http.post(
          Uri.parse(Urls.refreshToken),
          body: json.encode(body),
          headers: headersRequest,
        );
        if (response.statusCode == 401 &&
            response.body ==
                '{"code":401,"message":"user is not allowed to login by the system login policy"}') {
          blockUser();
        }
        Map<String, dynamic> newToken =
            json.decode(response.body) as Map<String, dynamic>;
        debugPrint(newToken.toString());
        authBloc.userDataModel = UserData.copyWith(
          oldData: authBloc.userDataModel!,
          accessToken: newToken['access']['token'] as String,
          expiresToken: newToken['access']['expires'] as String,
          refreshToken: newToken['refresh']['token'] as String,
        );
        await authBloc.persistUser(user: authBloc.userDataModel!);
        return newToken['access']['token'] as String;
      }
      return token;
    } else {
      return token;
    }
  }
Editor is loading...
Leave a Comment