Merge pull request 'feature/check-token' (#39) from feature/check-token into main

Reviewed-on: #39
This commit is contained in:
v4l3n71n 2025-03-06 20:39:44 +00:00
commit daef20db66
14 changed files with 78 additions and 6 deletions

View File

@ -3,6 +3,8 @@ import 'package:shared_preferences/shared_preferences.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import '../variable/globals.dart' as globals; import '../variable/globals.dart' as globals;
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart';
import '../pages/LoginDemo.dart';
class AuthService { class AuthService {
// Login with username and password // Login with username and password
@ -86,6 +88,21 @@ class AuthService {
} }
} }
Future<void> 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 // Get stored access token
Future<String?> getAccessToken() async { Future<String?> getAccessToken() async {
final prefs = await SharedPreferences.getInstance(); final prefs = await SharedPreferences.getInstance();

View File

@ -140,6 +140,7 @@ class _AddProfileState extends State<AddProfile> with ShowAlertDialog {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
AdHelper.createBannerAd(() => setState(() {})).then((ad) { AdHelper.createBannerAd(() => setState(() {})).then((ad) {
setState(() { setState(() {
_bannerAd = ad; _bannerAd = ad;

View File

@ -1,5 +1,4 @@
import 'dart:async'; import 'dart:async';
import 'dart:io';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
import '../classes/MyDrawer.dart'; import '../classes/MyDrawer.dart';
@ -7,6 +6,7 @@ import '../classes/MyDrawer.dart';
import 'DisplayPictureScreen.dart'; import 'DisplayPictureScreen.dart';
import 'package:camera/camera.dart'; import 'package:camera/camera.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../classes/auth_service.dart';
Future<void> main() async { Future<void> main() async {
// Ensure that plugin services are initialized so that `availableCameras()` // Ensure that plugin services are initialized so that `availableCameras()`
@ -46,12 +46,14 @@ class Camera extends StatefulWidget {
class CameraState extends State<Camera> { class CameraState extends State<Camera> {
late CameraController _controller; late CameraController _controller;
late Future<void> _initializeControllerFuture; late Future<void> _initializeControllerFuture;
final AuthService _authService = AuthService();
@override @override
void initState() { void initState() {
super.initState(); super.initState();
// To display the current output from the Camera, // To display the current output from the Camera,
// create a CameraController. // create a CameraController.
_authService.checkTokenStatus(context);
_controller = CameraController( _controller = CameraController(
// Get a specific camera from the list of available cameras. // Get a specific camera from the list of available cameras.
@ -95,7 +97,6 @@ class CameraState extends State<Camera> {
// camera preview. Use a FutureBuilder to display a loading spinner until the // camera preview. Use a FutureBuilder to display a loading spinner until the
// controller has finished initializing. // controller has finished initializing.
drawer: MyDrawer(), drawer: MyDrawer(),
body: FutureBuilder<void>( body: FutureBuilder<void>(
future: _initializeControllerFuture, future: _initializeControllerFuture,
builder: (context, snapshot) { builder: (context, snapshot) {

View File

@ -7,6 +7,7 @@ import 'package:image_picker/image_picker.dart';
import 'EditEvent.dart'; import 'EditEvent.dart';
import 'package:camera/camera.dart'; import 'package:camera/camera.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../classes/auth_service.dart';
Future<void> main() async { Future<void> main() async {
// Ensure that plugin services are initialized so that `availableCameras()` // Ensure that plugin services are initialized so that `availableCameras()`
@ -45,10 +46,13 @@ class CameraEdit extends StatefulWidget {
class CameraEditState extends State<CameraEdit> { class CameraEditState extends State<CameraEdit> {
late CameraController _controller; late CameraController _controller;
late Future<void> _initializeControllerFuture; late Future<void> _initializeControllerFuture;
final AuthService _authService = AuthService();
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_authService.checkTokenStatus(context);
// To display the current output from the Camera, // To display the current output from the Camera,
// create a CameraController. // create a CameraController.
@ -95,7 +99,6 @@ class CameraEditState extends State<CameraEdit> {
// camera preview. Use a FutureBuilder to display a loading spinner until the // camera preview. Use a FutureBuilder to display a loading spinner until the
// controller has finished initializing. // controller has finished initializing.
drawer: MyDrawer(), drawer: MyDrawer(),
body: FutureBuilder<void>( body: FutureBuilder<void>(
future: _initializeControllerFuture, future: _initializeControllerFuture,
builder: (context, snapshot) { builder: (context, snapshot) {

View File

@ -16,6 +16,7 @@ import '../classes/MyDrawer.dart';
import '../classes/ad_helper.dart'; import '../classes/ad_helper.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart';
import '../classes/auth_service.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
@ -62,11 +63,14 @@ class DisplayPictureScreen extends StatefulWidget {
class DisplayPictureScreenState extends State<DisplayPictureScreen> class DisplayPictureScreenState extends State<DisplayPictureScreen>
with ShowDescImageAdd, ShowAlertDialog, TickerProviderStateMixin { with ShowDescImageAdd, ShowAlertDialog, TickerProviderStateMixin {
BannerAd? _bannerAd; BannerAd? _bannerAd;
final AuthService _authService = AuthService();
late AnimationController controller; late AnimationController controller;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_authService.checkTokenStatus(context);
AdHelper.createBannerAd(() => setState(() {})).then((ad) { AdHelper.createBannerAd(() => setState(() {})).then((ad) {
setState(() { setState(() {
_bannerAd = ad; _bannerAd = ad;

View File

@ -9,12 +9,9 @@ import 'package:textfield_tags/textfield_tags.dart';
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'dart:typed_data';
import '../classes/events.dart'; import '../classes/events.dart';
import '../classes/MyDrawer.dart'; import '../classes/MyDrawer.dart';
import 'ItemMenu.dart';
import 'CameraEdit.dart';
import 'package:camera/camera.dart'; import 'package:camera/camera.dart';
import '../classes/alert.dart'; import '../classes/alert.dart';
@ -24,6 +21,7 @@ import '../variable/globals.dart' as globals;
import '../classes/ad_helper.dart'; import '../classes/ad_helper.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart';
import '../classes/auth_service.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
@ -60,6 +58,8 @@ class EditEvent extends StatefulWidget {
class _EditEventState extends State<EditEvent> class _EditEventState extends State<EditEvent>
with ShowAlertDialog, ShowEventDialog { with ShowAlertDialog, ShowEventDialog {
BannerAd? _bannerAd; BannerAd? _bannerAd;
final AuthService _authService = AuthService();
TextEditingController inputName = TextEditingController(); TextEditingController inputName = TextEditingController();
TextEditingController inputDate = TextEditingController(); TextEditingController inputDate = TextEditingController();
@ -315,6 +315,8 @@ class _EditEventState extends State<EditEvent>
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_authService.checkTokenStatus(context);
AdHelper.createBannerAd(() => setState(() {})).then((ad) { AdHelper.createBannerAd(() => setState(() {})).then((ad) {
setState(() { setState(() {
_bannerAd = ad; _bannerAd = ad;

View File

@ -17,6 +17,7 @@ import '../variable/globals.dart' as globals;
import '../classes/ad_helper.dart'; import '../classes/ad_helper.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart';
import '../classes/auth_service.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
@ -44,6 +45,8 @@ class EditProfile extends StatefulWidget {
class _EditProfileState extends State<EditProfile> class _EditProfileState extends State<EditProfile>
with ShowAlertDialog, ShowEventDialog { with ShowAlertDialog, ShowEventDialog {
BannerAd? _bannerAd; BannerAd? _bannerAd;
final AuthService _authService = AuthService();
TextEditingController inputUserName = TextEditingController(); TextEditingController inputUserName = TextEditingController();
TextEditingController inputName = TextEditingController(); TextEditingController inputName = TextEditingController();
@ -198,6 +201,8 @@ class _EditProfileState extends State<EditProfile>
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_authService.checkTokenStatus(context);
AdHelper.createBannerAd(() => setState(() {})).then((ad) { AdHelper.createBannerAd(() => setState(() {})).then((ad) {
setState(() { setState(() {
_bannerAd = ad; _bannerAd = ad;

View File

@ -12,6 +12,7 @@ import '../classes/eventAdded.dart';
import '../classes/ad_helper.dart'; import '../classes/ad_helper.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart';
import '../classes/auth_service.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
@ -39,6 +40,8 @@ class EditSettings extends StatefulWidget {
class _EditProfileState extends State<EditSettings> class _EditProfileState extends State<EditSettings>
with ShowAlertDialog, ShowEventDialog { with ShowAlertDialog, ShowEventDialog {
BannerAd? _bannerAd; BannerAd? _bannerAd;
final AuthService _authService = AuthService();
TextEditingController inputUserName = TextEditingController(); TextEditingController inputUserName = TextEditingController();
int? kilometer; int? kilometer;
@ -60,6 +63,8 @@ class _EditProfileState extends State<EditSettings>
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_authService.checkTokenStatus(context);
AdHelper.createBannerAd(() => setState(() {})).then((ad) { AdHelper.createBannerAd(() => setState(() {})).then((ad) {
setState(() { setState(() {
_bannerAd = ad; _bannerAd = ad;

View File

@ -23,6 +23,7 @@ import 'EditEvent.dart';
import '../classes/ad_helper.dart'; import '../classes/ad_helper.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart';
import '../classes/auth_service.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
@ -75,6 +76,7 @@ class ItemMenu extends StatefulWidget {
class _ItemMenuState extends State<ItemMenu> with ShowAlertDialog { class _ItemMenuState extends State<ItemMenu> with ShowAlertDialog {
BannerAd? _bannerAd; BannerAd? _bannerAd;
final AuthService _authService = AuthService();
String listUser = ""; String listUser = "";
String eventName = ""; String eventName = "";
@ -91,6 +93,8 @@ class _ItemMenuState extends State<ItemMenu> with ShowAlertDialog {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_authService.checkTokenStatus(context);
AdHelper.createBannerAd(() => setState(() {})).then((ad) { AdHelper.createBannerAd(() => setState(() {})).then((ad) {
setState(() { setState(() {
_bannerAd = ad; _bannerAd = ad;

View File

@ -11,6 +11,7 @@ import 'package:intl/date_symbol_data_local.dart';
import '../variable/globals.dart' as globals; import '../variable/globals.dart' as globals;
import '../classes/MyDrawer.dart'; import '../classes/MyDrawer.dart';
import '../classes/auth_service.dart';
// app starting point // app starting point
void main() { void main() {
@ -41,6 +42,8 @@ class ListItemOrganizers extends StatefulWidget {
// homepage state // homepage state
class _MyHomePageState extends State<ListItemOrganizers> { class _MyHomePageState extends State<ListItemOrganizers> {
final AuthService _authService = AuthService();
// variable to call and store future list of posts // variable to call and store future list of posts
// function to fetch data from api and return future list of posts // function to fetch data from api and return future list of posts
@ -60,6 +63,12 @@ class _MyHomePageState extends State<ListItemOrganizers> {
return body; return body;
} }
@override
void initState() {
super.initState();
_authService.checkTokenStatus(context);
}
// build function // build function
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -12,6 +12,7 @@ import 'package:intl/date_symbol_data_local.dart';
import '../variable/globals.dart' as globals; import '../variable/globals.dart' as globals;
import '../classes/MyDrawer.dart'; import '../classes/MyDrawer.dart';
import '../classes/auth_service.dart';
// app starting point // app starting point
void main() { void main() {
@ -43,6 +44,8 @@ class ListItemTags extends StatefulWidget {
class _MyHomePageState extends State<ListItemTags> { class _MyHomePageState extends State<ListItemTags> {
// variable to call and store future list of posts // 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 // function to fetch data from api and return future list of posts
static Future<List<Events>> getPosts(tags) async { static Future<List<Events>> getPosts(tags) async {
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
@ -60,6 +63,12 @@ class _MyHomePageState extends State<ListItemTags> {
return body; return body;
} }
@override
void initState() {
super.initState();
_authService.checkTokenStatus(context);
}
// build function // build function
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -18,6 +18,7 @@ import 'package:camera/camera.dart';
import '../classes/ad_helper.dart'; import '../classes/ad_helper.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart';
import '../classes/auth_service.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
@ -46,6 +47,7 @@ class ListItemMenu extends StatefulWidget {
class _MyHomePageState extends State<ListItemMenu> { class _MyHomePageState extends State<ListItemMenu> {
BannerAd? _bannerAd; BannerAd? _bannerAd;
final AuthService _authService = AuthService();
Future<List<Events>> postsFuture = getPosts(); Future<List<Events>> postsFuture = getPosts();
List<Events> filteredPosts = []; List<Events> filteredPosts = [];
@ -145,6 +147,7 @@ class _MyHomePageState extends State<ListItemMenu> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_authService.checkTokenStatus(context);
AdHelper.createBannerAd(() => setState(() {})).then((ad) { AdHelper.createBannerAd(() => setState(() {})).then((ad) {
setState(() { setState(() {
_bannerAd = ad; _bannerAd = ad;

View File

@ -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 '../classes/alert.dart'; // Assuming this contains your error dialog code.
import '../variable/globals.dart' as globals; import '../variable/globals.dart' as globals;
import '../classes/MyDrawer.dart'; import '../classes/MyDrawer.dart';
import '../classes/auth_service.dart';
void main() async { void main() async {
await dotenv.load(fileName: ".env"); // Load .env file await dotenv.load(fileName: ".env"); // Load .env file
@ -44,6 +45,8 @@ class MapboxPages extends StatefulWidget {
} }
class _MapboxPagesState extends State<MapboxPages> with ShowAlertDialog { class _MapboxPagesState extends State<MapboxPages> with ShowAlertDialog {
final AuthService _authService = AuthService();
late MapboxMapController mapController; late MapboxMapController mapController;
late String mapboxAccessToken; late String mapboxAccessToken;
List<LatLng> routeCoordinates = []; List<LatLng> routeCoordinates = [];
@ -58,6 +61,8 @@ class _MapboxPagesState extends State<MapboxPages> with ShowAlertDialog {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_authService.checkTokenStatus(context);
_getUserLocation(); _getUserLocation();
} }

View File

@ -18,6 +18,7 @@ import '../variable/globals.dart' as globals;
import '../classes/ad_helper.dart'; import '../classes/ad_helper.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart';
import '../classes/auth_service.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
@ -51,6 +52,7 @@ class UpdateeventImage extends StatefulWidget {
class _UpdateeventImageState extends State<UpdateeventImage> class _UpdateeventImageState extends State<UpdateeventImage>
with ShowAlertDialog, ShowEventDialog { with ShowAlertDialog, ShowEventDialog {
BannerAd? _bannerAd; BannerAd? _bannerAd;
final AuthService _authService = AuthService();
TextEditingController inputName = TextEditingController(); TextEditingController inputName = TextEditingController();
@ -316,6 +318,8 @@ class _UpdateeventImageState extends State<UpdateeventImage>
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_authService.checkTokenStatus(context);
AdHelper.createBannerAd(() => setState(() {})).then((ad) { AdHelper.createBannerAd(() => setState(() {})).then((ad) {
setState(() { setState(() {
_bannerAd = ad; _bannerAd = ad;