73 lines
1.8 KiB
Dart
73 lines
1.8 KiB
Dart
import 'package:firebase_auth/firebase_auth.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
class AuthProvider with ChangeNotifier {
|
|
final FirebaseAuth _firebaseAuth;
|
|
|
|
AuthProvider(this._firebaseAuth);
|
|
|
|
Stream<User?> get authStateChanges => _firebaseAuth.authStateChanges();
|
|
|
|
Future<bool> signIn({
|
|
required String email,
|
|
required String password,
|
|
required BuildContext context,
|
|
}) async {
|
|
try {
|
|
await _firebaseAuth.signInWithEmailAndPassword(
|
|
email: email,
|
|
password: password,
|
|
);
|
|
return true;
|
|
} on FirebaseAuthException catch (e) {
|
|
_showErrorDialog(context, e.message!);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
Future<bool> register({
|
|
required String email,
|
|
required String password,
|
|
required String displayName, // Tambahkan parameter displayName
|
|
required BuildContext context,
|
|
}) async {
|
|
try {
|
|
UserCredential userCredential =
|
|
await _firebaseAuth.createUserWithEmailAndPassword(
|
|
email: email,
|
|
password: password,
|
|
);
|
|
if (userCredential.user != null) {
|
|
await userCredential.user!.updateDisplayName(displayName);
|
|
await userCredential.user!.reload();
|
|
}
|
|
return true; // Registrasi berhasil
|
|
} on FirebaseAuthException catch (e) {
|
|
_showErrorDialog(context, e.message!);
|
|
return false; // Registrasi gagal
|
|
}
|
|
}
|
|
|
|
Future<void> signOut() async {
|
|
await _firebaseAuth.signOut();
|
|
}
|
|
|
|
void _showErrorDialog(BuildContext context, String message) {
|
|
showDialog(
|
|
context: context,
|
|
builder: (context) => AlertDialog(
|
|
title: const Text('Error'),
|
|
content: Text(message),
|
|
actions: [
|
|
TextButton(
|
|
onPressed: () {
|
|
Navigator.of(context).pop();
|
|
},
|
|
child: const Text('OK'),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|