Compare commits
3 Commits
feature/pe
...
main
Author | SHA1 | Date | |
---|---|---|---|
ce2a061bf0 | |||
04f4b7ce8e | |||
78ea5f0c10 |
@ -10,6 +10,8 @@ import 'alert.dart';
|
|||||||
import '../variable/globals.dart' as globals;
|
import '../variable/globals.dart' as globals;
|
||||||
|
|
||||||
import '../pages/LoginDemo.dart';
|
import '../pages/LoginDemo.dart';
|
||||||
|
import 'package:flutter_dotenv/flutter_dotenv.dart'; // Import dotenv
|
||||||
|
import 'package:encrypt_shared_preferences/provider.dart';
|
||||||
|
|
||||||
class MyDrawer extends StatelessWidget with ShowAlertDialog {
|
class MyDrawer extends StatelessWidget with ShowAlertDialog {
|
||||||
Future<void> logout(BuildContext context) async {
|
Future<void> logout(BuildContext context) async {
|
||||||
@ -28,7 +30,20 @@ class MyDrawer extends StatelessWidget with ShowAlertDialog {
|
|||||||
print("Status code logout ${response.statusCode}");
|
print("Status code logout ${response.statusCode}");
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
await prefs.remove("access_token"); // Correctly remove the token
|
await prefs.remove("access_token");
|
||||||
|
await dotenv.load(fileName: ".env"); // Load .env file
|
||||||
|
|
||||||
|
final keyEncrypt = dotenv.env['KEY_ENCRYPT'] ?? '';
|
||||||
|
if (keyEncrypt.isNotEmpty) {
|
||||||
|
await EncryptedSharedPreferences.initialize(keyEncrypt);
|
||||||
|
var sharedPref = EncryptedSharedPreferences.getInstance();
|
||||||
|
String username = sharedPref.getString("username") ?? "";
|
||||||
|
String password = sharedPref.getString("password") ?? "";
|
||||||
|
if ((username.isEmpty) || (password.isEmpty)) {
|
||||||
|
sharedPref.remove("username");
|
||||||
|
sharedPref.remove("password");
|
||||||
|
}
|
||||||
|
}
|
||||||
Navigator.pushAndRemoveUntil(
|
Navigator.pushAndRemoveUntil(
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(builder: (_) => LoginDemo()),
|
MaterialPageRoute(builder: (_) => LoginDemo()),
|
||||||
|
@ -4,7 +4,9 @@ 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 'package:flutter/material.dart';
|
||||||
|
import 'package:encrypt_shared_preferences/provider.dart';
|
||||||
import '../pages/LoginDemo.dart';
|
import '../pages/LoginDemo.dart';
|
||||||
|
import 'package:flutter_dotenv/flutter_dotenv.dart'; // Import dotenv
|
||||||
|
|
||||||
class AuthService {
|
class AuthService {
|
||||||
// Login with username and password
|
// Login with username and password
|
||||||
@ -19,15 +21,22 @@ class AuthService {
|
|||||||
'accept': 'application/json',
|
'accept': 'application/json',
|
||||||
'Content-Type': 'application/x-www-form-urlencoded',
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||||||
},
|
},
|
||||||
body: {
|
body: {"username": username, "password": password},
|
||||||
"username": username,
|
|
||||||
"password": password,
|
|
||||||
"remember_me": rememberMe.toString()
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (response.statusCode == 200 || response.statusCode == 201) {
|
if (response.statusCode == 200 || response.statusCode == 201) {
|
||||||
final prefs = await SharedPreferences.getInstance();
|
final prefs = await SharedPreferences.getInstance();
|
||||||
|
if (rememberMe) {
|
||||||
|
await dotenv.load(fileName: ".env"); // Load .env file
|
||||||
|
|
||||||
|
final keyEncrypt = dotenv.env['KEY_ENCRYPT'] ?? '';
|
||||||
|
if (keyEncrypt.isNotEmpty) {
|
||||||
|
await EncryptedSharedPreferences.initialize(keyEncrypt);
|
||||||
|
var sharedPref = EncryptedSharedPreferences.getInstance();
|
||||||
|
sharedPref.setString("username", username);
|
||||||
|
sharedPref.setString("password", password);
|
||||||
|
}
|
||||||
|
}
|
||||||
final cookies = response.headers["set-cookie"]?.split(";") ?? [];
|
final cookies = response.headers["set-cookie"]?.split(";") ?? [];
|
||||||
|
|
||||||
for (final cookie in cookies) {
|
for (final cookie in cookies) {
|
||||||
@ -81,8 +90,25 @@ class AuthService {
|
|||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
print("Token is invalid. Status code: ${response.statusCode}");
|
print("Token is invalid. Status code: ${response.statusCode}");
|
||||||
await prefs.remove("access_token"); // Clear invalid token
|
await dotenv.load(fileName: ".env"); // Load .env file
|
||||||
return false;
|
|
||||||
|
final keyEncrypt = dotenv.env['KEY_ENCRYPT'] ?? '';
|
||||||
|
if (keyEncrypt.isNotEmpty) {
|
||||||
|
await EncryptedSharedPreferences.initialize(keyEncrypt);
|
||||||
|
var sharedPref = EncryptedSharedPreferences.getInstance();
|
||||||
|
String username = sharedPref.getString("username") ?? "";
|
||||||
|
String password = sharedPref.getString("password") ?? "";
|
||||||
|
if ((username.isEmpty) || (password.isEmpty)) {
|
||||||
|
sharedPref.remove("username");
|
||||||
|
sharedPref.remove("password");
|
||||||
|
await prefs.remove("access_token"); // Clear invalid token
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return login(username, password);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print("Error while checking token: $e");
|
print("Error while checking token: $e");
|
||||||
|
@ -9,6 +9,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.6.1"
|
version: "3.6.1"
|
||||||
|
args:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: args
|
||||||
|
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.6.0"
|
||||||
|
asn1lib:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: asn1lib
|
||||||
|
sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.5.8"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -89,6 +105,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.18.0"
|
version: "1.18.0"
|
||||||
|
convert:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: convert
|
||||||
|
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.2"
|
||||||
cross_file:
|
cross_file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -137,6 +161,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "2.0.0"
|
||||||
|
encrypt:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: encrypt
|
||||||
|
sha256: "62d9aa4670cc2a8798bab89b39fc71b6dfbacf615de6cf5001fb39f7e4a996a2"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.0.3"
|
||||||
|
encrypt_shared_preferences:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: encrypt_shared_preferences
|
||||||
|
sha256: "35cd218e5e9d12fe4a63a545f46f2144d861909e4c4f2c4606fc75ffb53d9a46"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.8.8"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -648,6 +688,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.8"
|
version: "2.1.8"
|
||||||
|
pointycastle:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pointycastle
|
||||||
|
sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.9.1"
|
||||||
shared_preferences:
|
shared_preferences:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -51,6 +51,7 @@ dependencies:
|
|||||||
url_launcher: ^6.3.1
|
url_launcher: ^6.3.1
|
||||||
mapbox_gl: ^0.16.0
|
mapbox_gl: ^0.16.0
|
||||||
google_mobile_ads: ^5.3.1
|
google_mobile_ads: ^5.3.1
|
||||||
|
encrypt_shared_preferences: ^0.8.8
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user