diff options
author | zxu <zxu@google.com> | 2018-02-20 12:25:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-20 12:25:39 -0500 |
commit | 7a4a2ea10844afd6a58dace46854fae74399f55c (patch) | |
tree | bb6115c271d6fac490cb5720a79fcc7de21d2de9 /Firestore/core/src/firebase/firestore/auth | |
parent | a9f3f35d483f1031ef2e2860aeda921f56e1bf08 (diff) |
replacing FSTGetTokenResult by C++ Token implementation (#805)
* replacing Auth/FSTUser by C++ auth implementation
* address changes
* replacing FSTGetTokenResult by C++ Token implementation
* address changes
* address changes
* fix another const& v.s. dispatch bug
* fix more const& v.s. dispatch bug zxu123 committed
* fix
* passing by value in callback
Diffstat (limited to 'Firestore/core/src/firebase/firestore/auth')
3 files changed, 30 insertions, 3 deletions
diff --git a/Firestore/core/src/firebase/firestore/auth/credentials_provider.h b/Firestore/core/src/firebase/firestore/auth/credentials_provider.h index 2a52c99..917f8e1 100644 --- a/Firestore/core/src/firebase/firestore/auth/credentials_provider.h +++ b/Firestore/core/src/firebase/firestore/auth/credentials_provider.h @@ -31,11 +31,11 @@ namespace auth { // `TokenErrorListener` is a listener that gets a token or an error. // token: An auth token as a string, or nullptr if error occurred. // error: The error if one occurred, or else nullptr. -typedef std::function<void(const Token& token, const absl::string_view error)> +typedef std::function<void(Token token, const absl::string_view error)> TokenListener; // Listener notified with a User change. -typedef std::function<void(const User& user)> UserChangeListener; +typedef std::function<void(User user)> UserChangeListener; /** * Provides methods for getting the uid and token for the current user and diff --git a/Firestore/core/src/firebase/firestore/auth/token.cc b/Firestore/core/src/firebase/firestore/auth/token.cc index 0618ddb..4ee1b69 100644 --- a/Firestore/core/src/firebase/firestore/auth/token.cc +++ b/Firestore/core/src/firebase/firestore/auth/token.cc @@ -21,7 +21,15 @@ namespace firestore { namespace auth { Token::Token(const absl::string_view token, const User& user) - : token_(token), user_(user) { + : token_(token), user_(user), is_valid_(true) { +} + +Token::Token() : token_(), user_(User::Unauthenticated()), is_valid_(false) { +} + +const Token& Token::Invalid() { + static const Token kInvalidToken; + return kInvalidToken; } } // namespace auth diff --git a/Firestore/core/src/firebase/firestore/auth/token.h b/Firestore/core/src/firebase/firestore/auth/token.h index f3b7363..ff8d2f0 100644 --- a/Firestore/core/src/firebase/firestore/auth/token.h +++ b/Firestore/core/src/firebase/firestore/auth/token.h @@ -20,6 +20,7 @@ #include <string> #include "Firestore/core/src/firebase/firestore/auth/user.h" +#include "Firestore/core/src/firebase/firestore/util/firebase_assert.h" #include "absl/strings/string_view.h" namespace firebase { @@ -45,6 +46,7 @@ class Token { /** The actual raw token. */ const std::string& token() const { + FIREBASE_ASSERT(is_valid_); return token_; } @@ -56,9 +58,26 @@ class Token { return user_; } + /** + * Whether the token is a valid one. + * + * ## Portability notes: Invalid token is the equivalent of nil in the iOS + * token implementation. We use value instead of pointer for Token instance in + * the C++ migration. + */ + bool is_valid() const { + return is_valid_; + } + + /** Returns an invalid token. */ + static const Token& Invalid(); + private: + Token(); + const std::string token_; const User user_; + const bool is_valid_; }; } // namespace auth |