Conscience Core
CoreAuthenticator.h
Go to the documentation of this file.
1 #ifndef CoreAuthenticator_H
2 #define CoreAuthenticator_H
3 
4 #include <filesystem>
5 #include <memory>
6 #include <optional>
7 #include <string>
8 #include <vector>
9 
10 #include "CscCommon.h"
11 #include "Util/conscience_log.h"
12 #include "Util/conscience_util.h"
13 #include "Util/json.h"
14 
15 using std::string, std::to_string, std::unique_ptr, std::vector, std::optional;
16 
17 using namespace conscience_utils;
18 using namespace conscience_utils::logging;
19 using namespace conscience_utils::JSON;
20 
21 namespace fs = std::filesystem;
22 
24 
25 struct CscAuthRoles {
26 public:
27  inline static const string CONSCIENCE_TECH_TEAM = "CONSCIENCE_TECH_TEAM";
28 };
30  string token;
31  unsigned long long authTimestampMillis;
32  unsigned long long refreshTimestampMillis;
33  string userUid;
34  vector<string> userRoles;
35 
36  CscAuthentication(const string &token, unsigned long long timestamp, unsigned long long refreshTimestampMillis, const string &userUid, vector<string> userRoles);
37 
38  bool hasAnyRoles(const vector<string> &roles) const;
39  bool hasAllRoles(const vector<string> &roles) const;
40 };
41 
43 public:
44  static CoreAuthenticator *getInstance();
45 
54  ptr<const CscAuthentication> getAuthentication();
55 
70  ptr<const CscAuthentication> authenticate(const string &email, const string &password);
71 
80  ptr<const CscAuthentication> restoreAuthentication(const string &token);
81 
92  unsigned long long getTimeRemainingBeforeExpiration() const;
93  void removeAuth();
94 
95 private:
96  ptr<const CscAuthentication> authentication = nullptr;
97 
98  std::unique_ptr<CscLogger> logger;
99 
101  vector<string> extractUserRolesFromJson(const ptr<CscJsonObjectReader> &responseJson);
102  inline static CoreAuthenticator *instance = nullptr;
103 
104 };
105 }
106 
107 #endif
conscience_log.h
nlohmann::to_string
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
user-defined to_string function for JSON values
Definition: json.hpp:26470
conscience_core::bridging::webservices::auth::CscAuthentication::authTimestampMillis
unsigned long long authTimestampMillis
Definition: CoreAuthenticator.h:31
conscience_util.h
conscience_core::bridging::webservices::auth::CscAuthentication::userRoles
vector< string > userRoles
Definition: CoreAuthenticator.h:34
conscience_core::bridging::webservices::auth::CscAuthRoles
Definition: CoreAuthenticator.h:25
conscience_core::bridging::webservices::auth::CscAuthentication
Definition: CoreAuthenticator.h:29
logger
static std::unique_ptr< CscLogger > logger
Definition: gltfHelpers.cpp:6
conscience_utils::logging
Definition: conscience_log.cpp:20
conscience_core::bridging::webservices::auth::CscAuthentication::token
string token
Definition: CoreAuthenticator.h:30
conscience_utils::JSON
Definition: CscCommandMetadataBuilder.h:20
conscience_core::bridging::webservices::auth
Definition: CoreAuthenticator.cpp:22
conscience_core::bridging::webservices::auth::CscAuthentication::refreshTimestampMillis
unsigned long long refreshTimestampMillis
Definition: CoreAuthenticator.h:32
CscCommon.h
conscience_server::entities::instance
ServerEntities * instance
Definition: ServerEntities.cpp:39
conscience_utils
Definition: CscEntityReflexion.h:50
conscience_core::bridging::webservices::auth::CscAuthentication::userUid
string userUid
Definition: CoreAuthenticator.h:33
json.h
conscience_core::bridging::webservices::auth::CoreAuthenticator
Definition: CoreAuthenticator.h:42
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29