2024-04-30 19:25:16 +02:00
|
|
|
import 'package:cloud_firestore/cloud_firestore.dart';
|
2024-04-29 14:36:25 +02:00
|
|
|
import 'package:firebase_auth/firebase_auth.dart';
|
2024-05-18 00:24:10 +02:00
|
|
|
import '../../constants.dart';
|
2024-04-29 14:36:25 +02:00
|
|
|
|
|
|
|
class AuthService {
|
2024-04-30 19:25:16 +02:00
|
|
|
// instance of auth and firestore
|
2024-04-29 14:36:25 +02:00
|
|
|
final FirebaseAuth _auth = FirebaseAuth.instance;
|
2024-04-30 19:25:16 +02:00
|
|
|
final FirebaseFirestore _firestore = FirebaseFirestore.instance;
|
|
|
|
|
|
|
|
// get current user
|
|
|
|
User? getCurrentUser() {
|
|
|
|
return _auth.currentUser;
|
|
|
|
}
|
2024-04-29 14:36:25 +02:00
|
|
|
|
2024-05-18 00:24:10 +02:00
|
|
|
/// sign in (login)
|
|
|
|
///
|
|
|
|
/// @throws FirebaseAuthException
|
2024-04-29 14:36:25 +02:00
|
|
|
Future<UserCredential> signInWithEmailPassword(String email, password) async {
|
|
|
|
try {
|
|
|
|
UserCredential userCredential = await _auth.signInWithEmailAndPassword(
|
|
|
|
email: email,
|
|
|
|
password: password,
|
|
|
|
);
|
2024-04-30 19:25:16 +02:00
|
|
|
|
2024-04-29 14:36:25 +02:00
|
|
|
return userCredential;
|
2024-05-18 00:24:10 +02:00
|
|
|
} on FirebaseAuthException {
|
|
|
|
rethrow;
|
2024-04-29 14:36:25 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-05-18 00:24:10 +02:00
|
|
|
/// sign up (register)
|
|
|
|
///
|
|
|
|
/// @throws FirebaseAuthException
|
2024-04-29 14:36:25 +02:00
|
|
|
Future<UserCredential> signUpWithEmailPassword(String email, password) async {
|
|
|
|
try {
|
2024-04-30 19:25:16 +02:00
|
|
|
// create user
|
2024-04-29 14:36:25 +02:00
|
|
|
UserCredential userCredential =
|
|
|
|
await _auth.createUserWithEmailAndPassword(
|
|
|
|
email: email,
|
|
|
|
password: password,
|
|
|
|
);
|
2024-04-30 19:25:16 +02:00
|
|
|
|
|
|
|
// save user info in a document
|
2024-05-05 10:26:49 +02:00
|
|
|
_firestore
|
|
|
|
.collection(Constants.dbCollectionUsers)
|
|
|
|
.doc(userCredential.user!.uid)
|
|
|
|
.set(
|
2024-04-30 19:25:16 +02:00
|
|
|
{
|
|
|
|
'uid': userCredential.user!.uid,
|
|
|
|
'email': email,
|
|
|
|
},
|
|
|
|
);
|
|
|
|
|
2024-04-29 14:36:25 +02:00
|
|
|
return userCredential;
|
2024-05-18 00:24:10 +02:00
|
|
|
} on FirebaseAuthException {
|
|
|
|
rethrow;
|
2024-04-29 14:36:25 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-05-05 10:26:49 +02:00
|
|
|
// sign out
|
2024-04-29 14:36:25 +02:00
|
|
|
Future<void> signOut() async {
|
|
|
|
return await _auth.signOut();
|
|
|
|
}
|
|
|
|
}
|