home,signin,login view and ol logik
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import 'package:get/get.dart';
|
||||
import '../models/filament_model.dart';
|
||||
import '../pages/login_view.dart';
|
||||
import '../services/directus_service.dart';
|
||||
|
||||
class HomeController extends GetxController {
|
||||
final identId = Get.arguments['userIdentId'] as String? ?? '';
|
||||
final directusService = DirectusService();
|
||||
final isLoading = false.obs;
|
||||
final filamentModelList = <FilamentModel>[].obs;
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
loadFilamentListPerUser();
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {}
|
||||
|
||||
void logout() {
|
||||
Get.offAllNamed(LoginPage.namedRoute);
|
||||
}
|
||||
|
||||
void addFilament() {}
|
||||
|
||||
Future<void> loadFilamentListPerUser() async {
|
||||
isLoading.value = true;
|
||||
if (filamentModelList.isNotEmpty) {
|
||||
filamentModelList.clear();
|
||||
}
|
||||
if (identId != '') {
|
||||
var resultList = await directusService.getListByUserId(identId);
|
||||
if (resultList.isEmpty) {
|
||||
print('Dokumente wurden nicht geladen: ${resultList.length}');
|
||||
} else {
|
||||
print('Filament List: $resultList');
|
||||
filamentModelList.addAll(
|
||||
resultList.map((json) => FilamentModel.fromJson(json)).toList(),
|
||||
);
|
||||
}
|
||||
}
|
||||
isLoading.value = false;
|
||||
update();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
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.trim().toLowerCase();
|
||||
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.offAllNamed(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.offAllNamed(SigninPage.namedRoute, arguments: {'userIdentId': ''});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import '../pages/home_view.dart';
|
||||
import '../pages/login_view.dart';
|
||||
import '../services/directus_service.dart';
|
||||
|
||||
class SigninController extends GetxController {
|
||||
final userNameController = TextEditingController();
|
||||
final emailController = TextEditingController();
|
||||
final passwordController = TextEditingController();
|
||||
final cityController = TextEditingController();
|
||||
final countryController = TextEditingController();
|
||||
final directusService = DirectusService();
|
||||
|
||||
@override
|
||||
void onReady() {}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
userNameController.dispose();
|
||||
emailController.dispose();
|
||||
passwordController.dispose();
|
||||
cityController.dispose();
|
||||
countryController.dispose();
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
void register() async {
|
||||
// Eingaben überprüfen
|
||||
if (!_checkInputs()) return;
|
||||
|
||||
// Registrierungslogik
|
||||
var userName = userNameController.text.trim();
|
||||
var email = emailController.text.trim().toLowerCase();
|
||||
var password = passwordController.text;
|
||||
var city = cityController.text.trim();
|
||||
var country = countryController.text.trim();
|
||||
|
||||
print(
|
||||
'Registrieren mit Benutzername: $userName, E-Mail: $email, Stadt: $city, Land: $country',
|
||||
);
|
||||
|
||||
bool registrationSuccess = await directusService.register(userName, email, password, city, country);
|
||||
|
||||
if (registrationSuccess) {
|
||||
Get.snackbar(
|
||||
'Registrierung erfolgreich',
|
||||
'Willkommen, $userName!',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
var userIdentId = base64Encode(utf8.encode('$email:$password'));
|
||||
Get.offAllNamed(HomePage.namedRoute, arguments: {'userIdentId': userIdentId});
|
||||
} else {
|
||||
Get.snackbar(
|
||||
'Registrierung fehlgeschlagen',
|
||||
'Bitte überprüfen Sie Ihre Eingaben und versuchen Sie es erneut.',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void goToLoginPage() {
|
||||
FocusManager.instance.primaryFocus?.unfocus();
|
||||
Get.offAllNamed(LoginPage.namedRoute);
|
||||
}
|
||||
|
||||
bool _checkInputs() {
|
||||
if (userNameController.text.trim().isEmpty ||
|
||||
emailController.text.trim().isEmpty ||
|
||||
passwordController.text.isEmpty) {
|
||||
Get.snackbar(
|
||||
'Fehler',
|
||||
'Bitte alle erforderlichen Felder ausfüllen',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (passwordController.text.length < 6) {
|
||||
Get.snackbar(
|
||||
'Fehler',
|
||||
'Passwort muss mindestens 6 Zeichen lang sein',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user