Files
flutter-samples/packages/chatty/lib/data/prod/auth_impl.dart
T
2021-05-17 14:40:50 +05:30

44 lines
1.2 KiB
Dart

import 'package:firebase_auth/firebase_auth.dart';
import 'package:stream_chatter/data/auth_repository.dart';
import 'package:stream_chatter/domain/models/auth_user.dart';
import 'package:google_sign_in/google_sign_in.dart';
class AuthImpl extends AuthRepository {
FirebaseAuth _auth = FirebaseAuth.instance;
@override
Future<AuthUser> getAuthUser() async {
final user = _auth.currentUser;
if (user != null) {
return AuthUser(user.uid);
}
return null;
}
@override
Future<AuthUser> signIn() async {
try {
UserCredential userCredential;
final GoogleSignInAccount googleUser = await GoogleSignIn().signIn();
final GoogleSignInAuthentication googleAuth =
await googleUser.authentication;
final GoogleAuthCredential googleAuthCredential =
GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
userCredential = await _auth.signInWithCredential(googleAuthCredential);
final user = userCredential.user;
return AuthUser(user.uid);
} catch (e) {
print(e);
throw Exception('login error');
}
}
@override
Future<void> logout() async {
return _auth.signOut();
}
}