Ditto 1.1.3
Authenticator.hpp
1#ifndef _DITTO_AUTHENTICATOR_
2#define _DITTO_AUTHENTICATOR_
3
4#include "Ditto.hpp"
5
6#include "AuthenticationCallback.hpp"
7#include "AuthenticationStatus.hpp"
8#include "Observer.hpp"
9
10#include "dittoffi.hpp"
11
12#include <functional>
13#include <memory>
14#include <string>
15#include <vector>
16
17namespace ditto {
18class DittoError;
19class AuthenticationStatusObserver;
20
26class Authenticator : public std::enable_shared_from_this<Authenticator> {
27 friend class Ditto;
28 friend class OnlineIdentity;
30 friend class OnlinePlaygroundV2Identity;
31 friend class LoginProvider;
33 friend class ValidityListener;
34
35public:
40
50 std::string token, std::string provider,
51 std::function<void(std::unique_ptr<DittoError>)> login_handler) const;
52
65 std::string username, std::string password, std::string provider,
66 std::function<void(std::unique_ptr<DittoError>)> login_handler) const;
67
80 void logout(std::function<void(Ditto)> cleanup = [](Ditto ditto) {}) const;
81
87 std::shared_ptr<Observer>
88 observe_status(std::function<void(AuthenticationStatus status)> callback);
89
99 bool is_authenticated() const;
100
109 std::string user_id() const;
110
111private:
112 AuthenticationStatus _status;
113 std::shared_ptr<CAuthClient_t> auth_client;
114 std::weak_ptr<Ditto::Fields> weak_ditto_fields;
115 std::weak_ptr<AuthenticationCallback> callback;
116 std::vector<std::weak_ptr<AuthenticationStatusObserver>> status_observers;
117
118 Authenticator(std::shared_ptr<CAuthClient_t> auth_client,
119 std::shared_ptr<AuthenticationCallback> callback);
120
121 void set_weak_ditto_fields(std::weak_ptr<Ditto::Fields> weak_ditto_fields);
122 void stop_status_observer(
123 std::shared_ptr<AuthenticationStatusObserver> status_observer);
124 void validity_updated(bool web_valid, bool x509_valid);
125 void authentication_expiring(uint32_t time_remaining);
126 void update_and_notify(bool shouldNotify);
127};
128
129} // namespace ditto
130
131#endif
Definition: AuthenticationStatusObserver.hpp:15
Provides access to authentication information and methods for logging on to Ditto Cloud....
Definition: Authenticator.hpp:26
std::string user_id() const
Definition: Authenticator.cpp:81
std::shared_ptr< Observer > observe_status(std::function< void(AuthenticationStatus status)> callback)
Definition: Authenticator.cpp:69
void logout(std::function< void(Ditto)> cleanup=[](Ditto ditto) {}) const
Log out of Ditto.
Definition: Authenticator.cpp:56
void login_with_token(std::string token, std::string provider, std::function< void(std::unique_ptr< DittoError >)> login_handler) const
Log in to Ditto with a third-party token.
Definition: Authenticator.cpp:28
AuthenticationStatus get_status() const
Definition: Authenticator.cpp:26
bool is_authenticated() const
Definition: Authenticator.cpp:77
void login_with_credentials(std::string username, std::string password, std::string provider, std::function< void(std::unique_ptr< DittoError >)> login_handler) const
Log in to Ditto with a username and password.
Definition: Authenticator.cpp:42
The entrypoint to the Ditto SDK.
Definition: Ditto.hpp:25
Definition: login_provider.hpp:13
Run Ditto in secure production mode, logging on to Ditto Cloud or on on-premises authentication serve...
Definition: Identity.hpp:301
Test a Ditto Cloud app with weak shared token authentication ("Playground mode"). This is not secure ...
Definition: Identity.hpp:421
Run Ditto in secure production mode, logging on to Ditto Cloud or on on-premises authentication serve...
Definition: Identity.hpp:355
Definition: validity_listener.hpp:12
Provides info about the authentication status.
Definition: AuthenticationStatus.hpp:10