2025-10-22 08:43:20 +02:00

66 lines
1.8 KiB
Dart

import 'package:appwrite/appwrite.dart' as account_models;
import 'package:appwrite/models.dart' as user_models;
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import 'package:appwrite/appwrite.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
class LoginController extends GetxController {
final _account = Rxn<account_models.Account>();
final mailController = TextEditingController();
final passwordController = TextEditingController();
final nameController = TextEditingController();
final _endpoint = dotenv.env['APPWRITE_ENDPOINT_URL'] ?? '';
final _projectId = dotenv.env['APPWRITE_PROJECT_ID'] ?? '';
final _logedInUser = Rxn<user_models.User>();
account_models.Account? get account => _account.value;
user_models.User? get logedInUser => _logedInUser.value;
@override
void onInit() {
Client client = Client()
.setEndpoint(_endpoint)
.setProject(_projectId);
_account.value = Account(client);
super.onInit();
}
Future<void> login(String email, String password) async {
await _account.value!.createEmailPasswordSession(
email: email,
password: password,
);
final user = await _account.value!.get();
_logedInUser.value = user;
}
Future<void> register(String email, String password, String name) async {
await _account.value!.create(
userId: ID.unique(),
email: email,
password: password,
name: name,
);
await login(email, password);
}
Future<void> logout() async {
await _account.value!.deleteSession(sessionId: 'current');
_logedInUser.value = null;
}
@override
void onClose() {
mailController.dispose();
passwordController.dispose();
nameController.dispose();
super.onClose();
}
}