SERVER-127260: Use passkey idiom instead of friending std functions (#54122)

GitOrigin-RevId: b33853087812e94b5f31e328c148485d4fce4e23
This commit is contained in:
Guillaume Racicot 2026-05-21 12:12:18 -04:00 committed by MongoDB Bot
parent 8f1a18bdbd
commit f686b54e2b
2 changed files with 9 additions and 11 deletions

View File

@ -43,8 +43,8 @@ StatusWith<std::unique_ptr<UserRequest>> UserRequestX509::makeUserRequestX509(
std::shared_ptr<const SSLPeerInfo> peerInfo,
bool forReacquire,
bool insertAuthenticatedMechanism) {
auto request =
std::make_unique<UserRequestX509>(std::move(name), std::move(roles), std::move(peerInfo));
auto request = std::make_unique<UserRequestX509>(
Passkey{}, std::move(name), std::move(roles), std::move(peerInfo));
if (!forReacquire) {
return std::unique_ptr<UserRequest>(std::move(request));

View File

@ -51,14 +51,12 @@ namespace mongo {
* SSLPeerInfo struct if they exist.
*/
class UserRequestX509 : public UserRequestGeneral {
public:
// We define this function as a friend so that makeUserRequestX509
// can use it.
friend std::unique_ptr<UserRequestX509> std::make_unique<UserRequestX509>(
mongo::UserName&& name,
boost::optional<std::set<mongo::RoleName>>&& roles,
std::shared_ptr<const mongo::SSLPeerInfo>&& peerInfo);
private:
struct Passkey {
Passkey() = default;
};
public:
/**
* Makes a new UserRequestX509. Toggling for re-acquire to true enables
* a re-fetch of the roles from the certificate.
@ -90,8 +88,8 @@ public:
UserRequestCacheKey generateUserRequestCacheKey() const final;
protected:
UserRequestX509(UserName name,
UserRequestX509(Passkey,
UserName name,
boost::optional<std::set<RoleName>> roles,
std::shared_ptr<const SSLPeerInfo> peerInfo)
: UserRequestGeneral(std::move(name), std::move(roles)), _peerInfo(std::move(peerInfo)) {}