diff --git a/covas_mobile/lib/classes/auth_service.dart b/covas_mobile/lib/classes/auth_service.dart index 507c3e4..ba32f13 100644 --- a/covas_mobile/lib/classes/auth_service.dart +++ b/covas_mobile/lib/classes/auth_service.dart @@ -3,6 +3,8 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:http/http.dart' as http; import '../variable/globals.dart' as globals; import 'dart:io'; +import 'package:flutter/material.dart'; +import '../pages/LoginDemo.dart'; class AuthService { // Login with username and password @@ -86,6 +88,21 @@ class AuthService { } } + Future checkTokenStatus(context) async { + bool loggedIn = await isLoggedIn(); + SharedPreferences prefs = await SharedPreferences.getInstance(); + + if (!loggedIn) { + await prefs.remove("access_token"); // Correctly remove the token + + Navigator.pushAndRemoveUntil( + context, + MaterialPageRoute(builder: (_) => LoginDemo()), + (route) => false, // Remove all previous routes + ); + } + } + // Get stored access token Future getAccessToken() async { final prefs = await SharedPreferences.getInstance(); diff --git a/covas_mobile/lib/pages/AddProfile.dart b/covas_mobile/lib/pages/AddProfile.dart index ed154b1..5e7c8c0 100644 --- a/covas_mobile/lib/pages/AddProfile.dart +++ b/covas_mobile/lib/pages/AddProfile.dart @@ -140,6 +140,7 @@ class _AddProfileState extends State with ShowAlertDialog { @override void initState() { super.initState(); + AdHelper.createBannerAd(() => setState(() {})).then((ad) { setState(() { _bannerAd = ad; diff --git a/covas_mobile/lib/pages/Camera.dart b/covas_mobile/lib/pages/Camera.dart index 17fd22f..6c79f94 100644 --- a/covas_mobile/lib/pages/Camera.dart +++ b/covas_mobile/lib/pages/Camera.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import 'dart:io'; import 'package:image_picker/image_picker.dart'; import '../classes/MyDrawer.dart'; @@ -7,6 +6,7 @@ import '../classes/MyDrawer.dart'; import 'DisplayPictureScreen.dart'; import 'package:camera/camera.dart'; import 'package:flutter/material.dart'; +import '../classes/auth_service.dart'; Future main() async { // Ensure that plugin services are initialized so that `availableCameras()` @@ -46,12 +46,14 @@ class Camera extends StatefulWidget { class CameraState extends State { late CameraController _controller; late Future _initializeControllerFuture; + final AuthService _authService = AuthService(); @override void initState() { super.initState(); // To display the current output from the Camera, // create a CameraController. + _authService.checkTokenStatus(context); _controller = CameraController( // Get a specific camera from the list of available cameras. @@ -95,7 +97,6 @@ class CameraState extends State { // camera preview. Use a FutureBuilder to display a loading spinner until the // controller has finished initializing. drawer: MyDrawer(), - body: FutureBuilder( future: _initializeControllerFuture, builder: (context, snapshot) { diff --git a/covas_mobile/lib/pages/CameraEdit.dart b/covas_mobile/lib/pages/CameraEdit.dart index ad91db5..09034ce 100644 --- a/covas_mobile/lib/pages/CameraEdit.dart +++ b/covas_mobile/lib/pages/CameraEdit.dart @@ -7,6 +7,7 @@ import 'package:image_picker/image_picker.dart'; import 'EditEvent.dart'; import 'package:camera/camera.dart'; import 'package:flutter/material.dart'; +import '../classes/auth_service.dart'; Future main() async { // Ensure that plugin services are initialized so that `availableCameras()` @@ -45,10 +46,13 @@ class CameraEdit extends StatefulWidget { class CameraEditState extends State { late CameraController _controller; late Future _initializeControllerFuture; + final AuthService _authService = AuthService(); @override void initState() { super.initState(); + _authService.checkTokenStatus(context); + // To display the current output from the Camera, // create a CameraController. @@ -95,7 +99,6 @@ class CameraEditState extends State { // camera preview. Use a FutureBuilder to display a loading spinner until the // controller has finished initializing. drawer: MyDrawer(), - body: FutureBuilder( future: _initializeControllerFuture, builder: (context, snapshot) { diff --git a/covas_mobile/lib/pages/DisplayPictureScreen.dart b/covas_mobile/lib/pages/DisplayPictureScreen.dart index 73711df..e14612c 100644 --- a/covas_mobile/lib/pages/DisplayPictureScreen.dart +++ b/covas_mobile/lib/pages/DisplayPictureScreen.dart @@ -16,6 +16,7 @@ import '../classes/MyDrawer.dart'; import '../classes/ad_helper.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; +import '../classes/auth_service.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -62,11 +63,14 @@ class DisplayPictureScreen extends StatefulWidget { class DisplayPictureScreenState extends State with ShowDescImageAdd, ShowAlertDialog, TickerProviderStateMixin { BannerAd? _bannerAd; + final AuthService _authService = AuthService(); late AnimationController controller; @override void initState() { super.initState(); + _authService.checkTokenStatus(context); + AdHelper.createBannerAd(() => setState(() {})).then((ad) { setState(() { _bannerAd = ad; diff --git a/covas_mobile/lib/pages/EditEvent.dart b/covas_mobile/lib/pages/EditEvent.dart index 69d7691..00900f1 100644 --- a/covas_mobile/lib/pages/EditEvent.dart +++ b/covas_mobile/lib/pages/EditEvent.dart @@ -9,12 +9,9 @@ import 'package:textfield_tags/textfield_tags.dart'; import 'dart:convert'; import 'dart:io'; -import 'dart:typed_data'; import '../classes/events.dart'; import '../classes/MyDrawer.dart'; -import 'ItemMenu.dart'; -import 'CameraEdit.dart'; import 'package:camera/camera.dart'; import '../classes/alert.dart'; @@ -24,6 +21,7 @@ import '../variable/globals.dart' as globals; import '../classes/ad_helper.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; +import '../classes/auth_service.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -60,6 +58,8 @@ class EditEvent extends StatefulWidget { class _EditEventState extends State with ShowAlertDialog, ShowEventDialog { BannerAd? _bannerAd; + final AuthService _authService = AuthService(); + TextEditingController inputName = TextEditingController(); TextEditingController inputDate = TextEditingController(); @@ -315,6 +315,8 @@ class _EditEventState extends State @override void initState() { super.initState(); + _authService.checkTokenStatus(context); + AdHelper.createBannerAd(() => setState(() {})).then((ad) { setState(() { _bannerAd = ad; diff --git a/covas_mobile/lib/pages/EditProfile.dart b/covas_mobile/lib/pages/EditProfile.dart index 31bde9e..c1aaea3 100644 --- a/covas_mobile/lib/pages/EditProfile.dart +++ b/covas_mobile/lib/pages/EditProfile.dart @@ -17,6 +17,7 @@ import '../variable/globals.dart' as globals; import '../classes/ad_helper.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; +import '../classes/auth_service.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -44,6 +45,8 @@ class EditProfile extends StatefulWidget { class _EditProfileState extends State with ShowAlertDialog, ShowEventDialog { BannerAd? _bannerAd; + final AuthService _authService = AuthService(); + TextEditingController inputUserName = TextEditingController(); TextEditingController inputName = TextEditingController(); @@ -198,6 +201,8 @@ class _EditProfileState extends State @override void initState() { super.initState(); + _authService.checkTokenStatus(context); + AdHelper.createBannerAd(() => setState(() {})).then((ad) { setState(() { _bannerAd = ad; diff --git a/covas_mobile/lib/pages/EditSettings.dart b/covas_mobile/lib/pages/EditSettings.dart index c79e6c2..0be4c14 100644 --- a/covas_mobile/lib/pages/EditSettings.dart +++ b/covas_mobile/lib/pages/EditSettings.dart @@ -12,6 +12,7 @@ import '../classes/eventAdded.dart'; import '../classes/ad_helper.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; +import '../classes/auth_service.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -39,6 +40,8 @@ class EditSettings extends StatefulWidget { class _EditProfileState extends State with ShowAlertDialog, ShowEventDialog { BannerAd? _bannerAd; + final AuthService _authService = AuthService(); + TextEditingController inputUserName = TextEditingController(); int? kilometer; @@ -60,6 +63,8 @@ class _EditProfileState extends State @override void initState() { super.initState(); + _authService.checkTokenStatus(context); + AdHelper.createBannerAd(() => setState(() {})).then((ad) { setState(() { _bannerAd = ad; diff --git a/covas_mobile/lib/pages/ItemMenu.dart b/covas_mobile/lib/pages/ItemMenu.dart index db6ae9c..8b18d0a 100644 --- a/covas_mobile/lib/pages/ItemMenu.dart +++ b/covas_mobile/lib/pages/ItemMenu.dart @@ -23,6 +23,7 @@ import 'EditEvent.dart'; import '../classes/ad_helper.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; +import '../classes/auth_service.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -75,6 +76,7 @@ class ItemMenu extends StatefulWidget { class _ItemMenuState extends State with ShowAlertDialog { BannerAd? _bannerAd; + final AuthService _authService = AuthService(); String listUser = ""; String eventName = ""; @@ -91,6 +93,8 @@ class _ItemMenuState extends State with ShowAlertDialog { @override void initState() { super.initState(); + _authService.checkTokenStatus(context); + AdHelper.createBannerAd(() => setState(() {})).then((ad) { setState(() { _bannerAd = ad; diff --git a/covas_mobile/lib/pages/ListItemByOrganizers.dart b/covas_mobile/lib/pages/ListItemByOrganizers.dart index 2d8b62d..3a89580 100644 --- a/covas_mobile/lib/pages/ListItemByOrganizers.dart +++ b/covas_mobile/lib/pages/ListItemByOrganizers.dart @@ -11,6 +11,7 @@ import 'package:intl/date_symbol_data_local.dart'; import '../variable/globals.dart' as globals; import '../classes/MyDrawer.dart'; +import '../classes/auth_service.dart'; // app starting point void main() { @@ -41,6 +42,8 @@ class ListItemOrganizers extends StatefulWidget { // homepage state class _MyHomePageState extends State { + final AuthService _authService = AuthService(); + // variable to call and store future list of posts // function to fetch data from api and return future list of posts @@ -60,6 +63,12 @@ class _MyHomePageState extends State { return body; } + @override + void initState() { + super.initState(); + _authService.checkTokenStatus(context); + } + // build function @override Widget build(BuildContext context) { diff --git a/covas_mobile/lib/pages/ListItemByTags.dart b/covas_mobile/lib/pages/ListItemByTags.dart index 353dea8..3866cc9 100644 --- a/covas_mobile/lib/pages/ListItemByTags.dart +++ b/covas_mobile/lib/pages/ListItemByTags.dart @@ -12,6 +12,7 @@ import 'package:intl/date_symbol_data_local.dart'; import '../variable/globals.dart' as globals; import '../classes/MyDrawer.dart'; +import '../classes/auth_service.dart'; // app starting point void main() { @@ -43,6 +44,8 @@ class ListItemTags extends StatefulWidget { class _MyHomePageState extends State { // variable to call and store future list of posts + final AuthService _authService = AuthService(); + // function to fetch data from api and return future list of posts static Future> getPosts(tags) async { SharedPreferences prefs = await SharedPreferences.getInstance(); @@ -60,6 +63,12 @@ class _MyHomePageState extends State { return body; } + @override + void initState() { + super.initState(); + _authService.checkTokenStatus(context); + } + // build function @override Widget build(BuildContext context) { diff --git a/covas_mobile/lib/pages/ListItemMenu.dart b/covas_mobile/lib/pages/ListItemMenu.dart index 58f1b1f..5ffa41d 100644 --- a/covas_mobile/lib/pages/ListItemMenu.dart +++ b/covas_mobile/lib/pages/ListItemMenu.dart @@ -18,6 +18,7 @@ import 'package:camera/camera.dart'; import '../classes/ad_helper.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; +import '../classes/auth_service.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -46,6 +47,7 @@ class ListItemMenu extends StatefulWidget { class _MyHomePageState extends State { BannerAd? _bannerAd; + final AuthService _authService = AuthService(); Future> postsFuture = getPosts(); List filteredPosts = []; @@ -145,6 +147,7 @@ class _MyHomePageState extends State { @override void initState() { super.initState(); + _authService.checkTokenStatus(context); AdHelper.createBannerAd(() => setState(() {})).then((ad) { setState(() { _bannerAd = ad; diff --git a/covas_mobile/lib/pages/MapboxPages.dart b/covas_mobile/lib/pages/MapboxPages.dart index 686ddfa..8e005e9 100644 --- a/covas_mobile/lib/pages/MapboxPages.dart +++ b/covas_mobile/lib/pages/MapboxPages.dart @@ -11,6 +11,7 @@ import 'package:geolocator/geolocator.dart'; // For getting the user's location import '../classes/alert.dart'; // Assuming this contains your error dialog code. import '../variable/globals.dart' as globals; import '../classes/MyDrawer.dart'; +import '../classes/auth_service.dart'; void main() async { await dotenv.load(fileName: ".env"); // Load .env file @@ -44,6 +45,8 @@ class MapboxPages extends StatefulWidget { } class _MapboxPagesState extends State with ShowAlertDialog { + final AuthService _authService = AuthService(); + late MapboxMapController mapController; late String mapboxAccessToken; List routeCoordinates = []; @@ -58,6 +61,8 @@ class _MapboxPagesState extends State with ShowAlertDialog { @override void initState() { super.initState(); + _authService.checkTokenStatus(context); + _getUserLocation(); } diff --git a/covas_mobile/lib/pages/UpdateEventImage.dart b/covas_mobile/lib/pages/UpdateEventImage.dart index 30823c5..2d46d2c 100644 --- a/covas_mobile/lib/pages/UpdateEventImage.dart +++ b/covas_mobile/lib/pages/UpdateEventImage.dart @@ -18,6 +18,7 @@ import '../variable/globals.dart' as globals; import '../classes/ad_helper.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; +import '../classes/auth_service.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -51,6 +52,7 @@ class UpdateeventImage extends StatefulWidget { class _UpdateeventImageState extends State with ShowAlertDialog, ShowEventDialog { BannerAd? _bannerAd; + final AuthService _authService = AuthService(); TextEditingController inputName = TextEditingController(); @@ -316,6 +318,8 @@ class _UpdateeventImageState extends State @override void initState() { super.initState(); + _authService.checkTokenStatus(context); + AdHelper.createBannerAd(() => setState(() {})).then((ad) { setState(() { _bannerAd = ad;