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': ''}); } }