aboutsummaryrefslogtreecommitdiff
path: root/frontend/lib/services/auth_service.dart
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/lib/services/auth_service.dart')
-rw-r--r--frontend/lib/services/auth_service.dart51
1 files changed, 51 insertions, 0 deletions
diff --git a/frontend/lib/services/auth_service.dart b/frontend/lib/services/auth_service.dart
new file mode 100644
index 000000000..2a3693638
--- /dev/null
+++ b/frontend/lib/services/auth_service.dart
@@ -0,0 +1,51 @@
+import 'package:firebase_auth/firebase_auth.dart';
+import 'package:google_sign_in/google_sign_in.dart';
+
+class AuthService {
+ final FirebaseAuth _auth = FirebaseAuth.instance;
+ final GoogleSignIn googleSignIn = GoogleSignIn(
+ clientId:
+ "387936576242-iejdacrjljds7hf99q0p6eqna8rju3sb.apps.googleusercontent.com");
+
+// Sign in with Google using redirect
+// Sign in with Google using redirect
+ Future<UserCredential?> signInWithGoogle() async {
+ try {
+ final GoogleSignInAccount? googleSignInAccount =
+ await googleSignIn.signIn();
+ if (googleSignInAccount != null) {
+ final GoogleSignInAuthentication googleSignInAuthentication =
+ await googleSignInAccount.authentication;
+ final AuthCredential credential = GoogleAuthProvider.credential(
+ accessToken: googleSignInAuthentication.accessToken,
+ idToken: googleSignInAuthentication.idToken,
+ );
+ return await _auth.signInWithCredential(credential);
+ }
+ } catch (e) {
+ print("Error during Google Sign-In: $e");
+ return null;
+ }
+ }
+
+// Sign in with GitHub using redirect
+ Future<UserCredential?> signInWithGitHub() async {
+ try {
+ final GithubAuthProvider provider = GithubAuthProvider();
+ return await _auth.signInWithPopup(provider);
+ } catch (e) {
+ print("Error during GitHub Sign-In: $e");
+ return null;
+ }
+ }
+
+ // Sign out
+ Future<void> signOut() async {
+ await _auth.signOut();
+ }
+
+ // Get current user
+ User? getCurrentUser() {
+ return _auth.currentUser;
+ }
+}