66 lines
1.8 KiB
Dart
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();
|
|
}
|
|
}
|