Skip to content

Commit

Permalink
fix(authentication): getIdToken causes app crash if no user is sign…
Browse files Browse the repository at this point in the history
…ed in (#79)
  • Loading branch information
robingenz authored May 5, 2022
1 parent 8da4212 commit 5648977
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 8 deletions.
5 changes: 5 additions & 0 deletions .changeset/soft-eagles-relate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@capacitor-firebase/authentication": patch
---

fix: `getIdToken` causes app crash if no user is signed in
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,10 @@ public FirebaseUser getCurrentUser() {

public void getIdToken(Boolean forceRefresh, final GetIdTokenResultCallback resultCallback) {
FirebaseUser user = getCurrentUser();
if (user == null) {
resultCallback.error(FirebaseAuthenticationPlugin.ERROR_NO_USER_SIGNED_IN);
return;
}
Task<GetTokenResult> tokenResultTask = user.getIdToken(forceRefresh);
tokenResultTask.addOnCompleteListener(
task -> {
Expand Down
11 changes: 7 additions & 4 deletions packages/authentication/ios/Plugin/FirebaseAuthentication.swift
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,14 @@ public typealias AuthStateChangedObserver = () -> Void
return Auth.auth().currentUser
}

@objc func getIdToken(_ forceRefresh: Bool, completion: @escaping (String?, Error?) -> Void) {
let user = self.getCurrentUser()
user?.getIDTokenResult(forcingRefresh: forceRefresh, completion: { result, error in
@objc func getIdToken(_ forceRefresh: Bool, completion: @escaping (String?, String?) -> Void) {
guard let user = self.getCurrentUser() else {
completion(nil, self.plugin.errorNoUserSignedIn)
return
}
user.getIDTokenResult(forcingRefresh: forceRefresh, completion: { result, error in
if let error = error {
completion(nil, error)
completion(nil, error.localizedDescription)
return
}
completion(result?.token, nil)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,9 @@ public class FirebaseAuthenticationPlugin: CAPPlugin {
@objc func getIdToken(_ call: CAPPluginCall) {
let forceRefresh = call.getBool("forceRefresh", false)

implementation?.getIdToken(forceRefresh, completion: { token, error in
if let error = error {
call.reject(error.localizedDescription)
implementation?.getIdToken(forceRefresh, completion: { token, errorMessage in
if let errorMessage = errorMessage {
call.reject(errorMessage)
return
}
var result = JSObject()
Expand Down
5 changes: 4 additions & 1 deletion packages/authentication/src/web.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,10 @@ export class FirebaseAuthenticationWeb

public async getIdToken(): Promise<GetIdTokenResult> {
const auth = getAuth();
const idToken = await auth.currentUser?.getIdToken();
if (!auth.currentUser) {
throw new Error(FirebaseAuthenticationWeb.ERROR_NO_USER_SIGNED_IN);
}
const idToken = await auth.currentUser.getIdToken();
const result: GetIdTokenResult = {
token: idToken || '',
};
Expand Down

0 comments on commit 5648977

Please sign in to comment.