diff --git a/src/jamidht/account_manager.cpp b/src/jamidht/account_manager.cpp index a8581a059e87e9c610f461bacbeac31abf0247da..e2c37a7b2457a99d6008b087a9e60500bdeeddfd 100644 --- a/src/jamidht/account_manager.cpp +++ b/src/jamidht/account_manager.cpp @@ -93,6 +93,7 @@ AccountManager::useIdentity( const dht::crypto::Identity& identity, const std::string& receipt, const std::vector<uint8_t>& receiptSignature, + const std::string& username, OnChangeCallback&& onChange) { if (receipt.empty() or receiptSignature.empty()) @@ -158,6 +159,7 @@ AccountManager::useIdentity( info->deviceId = identity.first->getPublicKey().getId().toString(); info->announce = std::move(announce); info->ethAccount = root["eth"].asString(); + info->username = username; info_ = std::move(info); JAMI_DBG("[Auth] Device %s receipt checked successfully for account %s", info_->deviceId.c_str(), id.c_str()); diff --git a/src/jamidht/account_manager.h b/src/jamidht/account_manager.h index 790d18ef6a61f3ea067b55c12908fb18efb58a3e..40fc32c27ef0f8bffb3735934008810b4775877c 100644 --- a/src/jamidht/account_manager.h +++ b/src/jamidht/account_manager.h @@ -48,6 +48,7 @@ struct AccountInfo { std::string deviceId; std::shared_ptr<dht::Value> announce; std::string ethAccount; + std::string username; }; template <typename To, typename From> @@ -125,6 +126,7 @@ public: const dht::crypto::Identity& id, const std::string& receipt, const std::vector<uint8_t>& receiptSignature, + const std::string& username, OnChangeCallback&& onChange); void setDht(const std::shared_ptr<dht::DhtRunner>& dht) { dht_ = dht; } diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp index 64dd0e5559d698e57c46821c271dd1135974817c..984d0bc2180861c8dab7b30883eb4db6b521f29a 100644 --- a/src/jamidht/jamiaccount.cpp +++ b/src/jamidht/jamiaccount.cpp @@ -913,7 +913,7 @@ JamiAccount::loadAccount(const std::string& archive_password, const std::string& } auto id = accountManager_->loadIdentity(tlsCertificateFile_, tlsPrivateKeyFile_, tlsPassword_); - if (auto info = accountManager_->useIdentity(id, receipt_, receiptSignature_, std::move(callbacks))) { + if (auto info = accountManager_->useIdentity(id, receipt_, receiptSignature_, managerUsername_, std::move(callbacks))) { // normal loading path id_ = std::move(id); username_ = RING_URI_PREFIX+info->accountId; diff --git a/src/jamidht/server_account_manager.cpp b/src/jamidht/server_account_manager.cpp index fecb5fd1babc05f28c9ae614cb66246fd638c5f6..8d87c14fc1d91849d507a8a866b6fd1e9631a08b 100644 --- a/src/jamidht/server_account_manager.cpp +++ b/src/jamidht/server_account_manager.cpp @@ -166,6 +166,7 @@ ServerAccountManager::initAuthentication( if (not info->announce) { ctx->onFailure(AuthError::SERVER_ERROR, "Can't parse announce from server"); } + info->username = ctx->credentials->username; this_.creds_ = std::move(ctx->credentials); this_.info_ = std::move(info);