78 lines
2.6 KiB
Dart
78 lines
2.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import '../helper/helper.dart' as helper;
|
|
import '../models/tank_user_model.dart';
|
|
import '../pages/home_view.dart';
|
|
import '../pages/signin_view.dart';
|
|
import '../services/directus_service.dart';
|
|
import '../helper/password_helper.dart';
|
|
|
|
class LoginController extends GetxController {
|
|
final emailController = TextEditingController();
|
|
final passwordController = TextEditingController();
|
|
final directusService = DirectusService();
|
|
|
|
@override
|
|
void onReady() {}
|
|
|
|
@override
|
|
void onClose() {
|
|
emailController.dispose();
|
|
passwordController.dispose();
|
|
}
|
|
|
|
void newLoginDirectus() async {
|
|
var email = emailController.text;
|
|
var password = passwordController.text;
|
|
var result = await directusService.getTankUserList();
|
|
if(result.isEmpty) {
|
|
Get.snackbar(
|
|
'Login fehlgeschlagen',
|
|
'Fehler beim Abrufen der Benutzerdaten. Bitte versuchen Sie es später erneut.',
|
|
snackPosition: SnackPosition.BOTTOM,
|
|
);
|
|
return;
|
|
}
|
|
var tankUserList = result.map((userJson) => TankUser.fromJson(userJson)).toList();
|
|
var identId = tankUserList.firstWhereOrNull((user) => user.email == email)?.userIdentId ?? '';
|
|
if(identId.isEmpty) {
|
|
Get.snackbar(
|
|
'Login fehlgeschlagen',
|
|
'Benutzer mit dieser E-Mail-Adresse wurde nicht gefunden.',
|
|
snackPosition: SnackPosition.BOTTOM,
|
|
);
|
|
return;
|
|
}
|
|
var storedHash = tankUserList.firstWhereOrNull((user) => user.email == email)?.passwordHash ?? '';
|
|
if(storedHash.isEmpty) {
|
|
Get.snackbar(
|
|
'Login fehlgeschlagen',
|
|
'Kein gespeicherter Passwort-Hash für diesen Benutzer gefunden.',
|
|
snackPosition: SnackPosition.BOTTOM,
|
|
);
|
|
return;
|
|
}
|
|
var isPassCorrect = await PasswordHelper.verifyPassword(password, storedHash);
|
|
if(isPassCorrect && identId.isNotEmpty) {
|
|
Get.snackbar(
|
|
'Login erfolgreich',
|
|
'Willkommen zurück!',
|
|
snackPosition: SnackPosition.BOTTOM,
|
|
);
|
|
print('Login erfolgreich für Benutzer mit IdentId: $identId');
|
|
helper.kCurrentUserIdentId = identId; // Set the current user identId
|
|
Get.offAndToNamed(HomePage.namedRoute, arguments: {'userIdentId': identId});
|
|
} else {
|
|
Get.snackbar(
|
|
'Login fehlgeschlagen',
|
|
'Bitte überprüfen Sie Ihre E-Mail und Ihr Passwort und versuchen Sie es erneut\noder registrieren Sie sich, wenn Sie noch kein Konto haben.',
|
|
snackPosition: SnackPosition.BOTTOM,
|
|
);
|
|
}
|
|
}
|
|
|
|
void goToSignInPage() {
|
|
Get.offAndToNamed(SigninPage.namedRoute, arguments: {'userIdentId': ''});
|
|
}
|
|
}
|