Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions packages/firebase_auth/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 0.8.1+3

* Reduce compiler warnings in Android plugin
* Raise errors early when accessing methods that require a Firebase User

## 0.8.1+2

* Log messages about automatic configuration of the default app are now less confusing.
Expand Down
2 changes: 1 addition & 1 deletion packages/firebase_auth/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ buildscript {
}

dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'com.android.tools.build:gradle:3.3.1'
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.google.firebase.auth.FirebaseAuthException;
import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.FirebaseUserMetadata;
import com.google.firebase.auth.GetTokenResult;
import com.google.firebase.auth.GithubAuthProvider;
import com.google.firebase.auth.GoogleAuthProvider;
Expand Down Expand Up @@ -265,13 +266,19 @@ private Map<String, Object> getVerifyPhoneNumberExceptionMap(FirebaseException e

private void handleLinkWithEmailAndPassword(
MethodCall call, Result result, FirebaseAuth firebaseAuth) {
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
if (currentUser == null) {
markUserRequired(result);
return;
}

Map<String, String> arguments = call.arguments();
String email = arguments.get("email");
String password = arguments.get("password");

AuthCredential credential = EmailAuthProvider.getCredential(email, password);
firebaseAuth
.getCurrentUser()

currentUser
.linkWithCredential(credential)
.addOnCompleteListener(new SignInCompleteListener(result));
}
Expand Down Expand Up @@ -325,29 +332,43 @@ private void handleSendPasswordResetEmail(

private void handleSendEmailVerification(
@SuppressWarnings("unused") MethodCall call, Result result, FirebaseAuth firebaseAuth) {
firebaseAuth
.getCurrentUser()
.sendEmailVerification()
.addOnCompleteListener(new TaskVoidCompleteListener(result));
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
if (currentUser == null) {
markUserRequired(result);
return;
}

currentUser.sendEmailVerification().addOnCompleteListener(new TaskVoidCompleteListener(result));
}

private void handleReload(MethodCall call, Result result, FirebaseAuth firebaseAuth) {
firebaseAuth
.getCurrentUser()
.reload()
.addOnCompleteListener(new TaskVoidCompleteListener(result));
private void handleReload(
@SuppressWarnings("unused") MethodCall call, Result result, FirebaseAuth firebaseAuth) {
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
if (currentUser == null) {
markUserRequired(result);
return;
}

currentUser.reload().addOnCompleteListener(new TaskVoidCompleteListener(result));
}

private void handleDelete(MethodCall call, Result result, FirebaseAuth firebaseAuth) {
firebaseAuth
.getCurrentUser()
.delete()
.addOnCompleteListener(new TaskVoidCompleteListener(result));
private void handleDelete(
@SuppressWarnings("unused") MethodCall call, Result result, FirebaseAuth firebaseAuth) {
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
if (currentUser == null) {
markUserRequired(result);
return;
}

currentUser.delete().addOnCompleteListener(new TaskVoidCompleteListener(result));
}

private AuthCredential getCredential(Map<String, Object> arguments) {
AuthCredential credential;

@SuppressWarnings("unchecked")
Map<String, String> data = (Map<String, String>) arguments.get("data");

switch ((String) arguments.get("provider")) {
case EmailAuthProvider.PROVIDER_ID:
{
Expand Down Expand Up @@ -400,29 +421,42 @@ private AuthCredential getCredential(Map<String, Object> arguments) {

private void handleSignInWithCredential(
MethodCall call, Result result, FirebaseAuth firebaseAuth) {

@SuppressWarnings("unchecked")
AuthCredential credential = getCredential((Map<String, Object>) call.arguments());

firebaseAuth
.signInWithCredential(credential)
.addOnCompleteListener(new SignInCompleteListener(result));
}

private void handleReauthenticateWithCredential(
MethodCall call, Result result, FirebaseAuth firebaseAuth) {
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
if (currentUser == null) {
markUserRequired(result);
return;
}

@SuppressWarnings("unchecked")
AuthCredential credential = getCredential((Map<String, Object>) call.arguments());
firebaseAuth
.getCurrentUser()

currentUser
.reauthenticate(credential)
.addOnCompleteListener(new TaskVoidCompleteListener(result));
}

private void handleUnlinkFromProvider(MethodCall call, Result result, FirebaseAuth firebaseAuth) {
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
if (currentUser == null) {
markUserRequired(result);
return;
}

Map<String, String> arguments = call.arguments();
final String provider = arguments.get("provider");

firebaseAuth
.getCurrentUser()
.unlink(provider)
.addOnCompleteListener(new SignInCompleteListener(result));
currentUser.unlink(provider).addOnCompleteListener(new SignInCompleteListener(result));
}

private void handleSignInWithCustomToken(
Expand All @@ -435,22 +469,28 @@ private void handleSignInWithCustomToken(
.addOnCompleteListener(new SignInCompleteListener(result));
}

private void handleSignOut(MethodCall call, final Result result, FirebaseAuth firebaseAuth) {
private void handleSignOut(
@SuppressWarnings("unused") MethodCall call, final Result result, FirebaseAuth firebaseAuth) {
firebaseAuth.signOut();
result.success(null);
}

private void handleGetToken(MethodCall call, final Result result, FirebaseAuth firebaseAuth) {
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
if (currentUser == null) {
markUserRequired(result);
return;
}

Map<String, Boolean> arguments = call.arguments();
boolean refresh = arguments.get("refresh");

firebaseAuth
.getCurrentUser()
currentUser
.getIdToken(refresh)
.addOnCompleteListener(
new OnCompleteListener<GetTokenResult>() {
public void onComplete(@NonNull Task<GetTokenResult> task) {
if (task.isSuccessful()) {
if (task.isSuccessful() && task.getResult() != null) {
String idToken = task.getResult().getToken();
result.success(idToken);
} else {
Expand All @@ -461,26 +501,40 @@ public void onComplete(@NonNull Task<GetTokenResult> task) {
}

private void handleUpdateEmail(MethodCall call, Result result, FirebaseAuth firebaseAuth) {
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
if (currentUser == null) {
markUserRequired(result);
return;
}

Map<String, String> arguments = call.arguments();
final String email = arguments.get("email");

firebaseAuth
.getCurrentUser()
.updateEmail(email)
.addOnCompleteListener(new TaskVoidCompleteListener(result));
currentUser.updateEmail(email).addOnCompleteListener(new TaskVoidCompleteListener(result));
}

private void handleUpdatePassword(MethodCall call, Result result, FirebaseAuth firebaseAuth) {
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
if (currentUser == null) {
markUserRequired(result);
return;
}

Map<String, String> arguments = call.arguments();
final String password = arguments.get("password");

firebaseAuth
.getCurrentUser()
currentUser
.updatePassword(password)
.addOnCompleteListener(new TaskVoidCompleteListener(result));
}

private void handleUpdateProfile(MethodCall call, Result result, FirebaseAuth firebaseAuth) {
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
if (currentUser == null) {
markUserRequired(result);
return;
}

Map<String, String> arguments = call.arguments();

UserProfileChangeRequest.Builder builder = new UserProfileChangeRequest.Builder();
Expand All @@ -491,8 +545,7 @@ private void handleUpdateProfile(MethodCall call, Result result, FirebaseAuth fi
builder.setPhotoUri(Uri.parse(arguments.get("photoUrl")));
}

firebaseAuth
.getCurrentUser()
currentUser
.updateProfile(builder.build())
.addOnCompleteListener(new TaskVoidCompleteListener(result));
}
Expand Down Expand Up @@ -624,15 +677,19 @@ private Map<String, Object> mapFromUser(FirebaseUser user) {
if (user != null) {
List<Map<String, Object>> providerData = new ArrayList<>();
for (UserInfo userInfo : user.getProviderData()) {
// Ignore phone provider since firebase provider is a super set of the phone provider.
// Ignore phone provider since firebase provider is a super set of the phone
// provider.
if (userInfo.getProviderId().equals("phone")) {
continue;
}
providerData.add(Collections.unmodifiableMap(userInfoToMap(userInfo)));
}
Map<String, Object> userMap = userInfoToMap(user);
userMap.put("creationTimestamp", user.getMetadata().getCreationTimestamp());
userMap.put("lastSignInTimestamp", user.getMetadata().getLastSignInTimestamp());
final FirebaseUserMetadata metadata = user.getMetadata();
if (metadata != null) {
userMap.put("creationTimestamp", metadata.getCreationTimestamp());
userMap.put("lastSignInTimestamp", metadata.getLastSignInTimestamp());
}
userMap.put("isAnonymous", user.isAnonymous());
userMap.put("isEmailVerified", user.isEmailVerified());
userMap.put("providerData", Collections.unmodifiableList(providerData));
Expand All @@ -642,6 +699,10 @@ private Map<String, Object> mapFromUser(FirebaseUser user) {
}
}

private void markUserRequired(Result result) {
result.error("USER_REQUIRED", "Please authenticate with Firebase first", null);
}

private void reportException(Result result, @Nullable Exception exception) {
if (exception != null) {
if (exception instanceof FirebaseAuthException) {
Expand Down
2 changes: 1 addition & 1 deletion packages/firebase_auth/example/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ buildscript {
}

dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'com.android.tools.build:gradle:3.3.1'
classpath 'com.google.gms:google-services:4.2.0'
}
}
Expand Down
2 changes: 1 addition & 1 deletion packages/firebase_auth/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Flutter plugin for Firebase Auth, enabling Android and iOS
like Google, Facebook and Twitter.
author: Flutter Team <flutter-dev@googlegroups.com>
homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_auth
version: "0.8.1+2"
version: "0.8.1+3"

flutter:
plugin:
Expand Down