Skip to content

Commit 93568db

Browse files
authored
feat: logout on getting 401 Unauthorized response
2 parents e900e43 + dddd059 commit 93568db

2 files changed

Lines changed: 27 additions & 4 deletions

File tree

lib/presentation/app/bloc/app_bloc.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'dart:async';
2-
32
import 'package:appetizer/data/constants/constants.dart';
43
import 'package:appetizer/data/services/local/local_storage_service.dart';
54
import 'package:appetizer/domain/models/user/user.dart';

lib/utils/interceptors/auth_interceptor.dart

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
import 'dart:async';
2-
2+
import 'package:appetizer/data/constants/constants.dart';
3+
import 'package:appetizer/data/services/local/local_storage_service.dart';
4+
import 'package:appetizer/presentation/app/bloc/app_bloc.dart';
5+
import 'package:appetizer/utils/app_extensions/app_extensions.dart';
36
import 'package:dio/dio.dart';
4-
import 'package:flutter/foundation.dart';
7+
import 'package:flutter/material.dart';
8+
import 'package:flutter_bloc/flutter_bloc.dart';
59

610
class AuthInterceptor extends Interceptor {
711
ValueGetter<FutureOr<String?>>? getToken;
812

9-
AuthInterceptor({this.getToken});
13+
AuthInterceptor({
14+
this.getToken,
15+
});
1016

1117
@override
1218
void onRequest(
@@ -22,4 +28,22 @@ class AuthInterceptor extends Interceptor {
2228

2329
return super.onRequest(options, handler);
2430
}
31+
32+
@override
33+
void onError(DioException err, ErrorInterceptorHandler handler) {
34+
if (err.response?.statusCode == 401) {
35+
LocalStorageService.setValue(key: AppConstants.LOGGED_IN, value: false);
36+
LocalStorageService.setValue(key: AppConstants.AUTH_TOKEN, value: null);
37+
if (BaseApp.currentContext != null) {
38+
const snackBar =
39+
SnackBar(content: Text('User is inactive or unauthorized!'));
40+
ScaffoldMessenger.of(BaseApp.currentContext!).showSnackBar(snackBar);
41+
}
42+
BaseApp.currentContext
43+
?.read<AppBloc>()
44+
.add(const NavigateToLoginScreen());
45+
} else {
46+
handler.next(err);
47+
}
48+
}
2549
}

0 commit comments

Comments
 (0)