std::string AuthorizationSession::getAuthenticatedUserNamesToken() { std::string ret; for (UserSet::NameIterator nameIter = getAuthenticatedUserNames(); nameIter.more(); nameIter.next()) { ret += '\0'; // Using a NUL byte which isn't valid in usernames to separate them. ret += nameIter->getFullName(); } return ret; }
bool run(const string&, BSONObj& cmdObj, int, string& errmsg, BSONObjBuilder& result, bool fromRepl) { AuthorizationSession* authSession = ClientBasic::getCurrent()->getAuthorizationSession(); BSONObjBuilder authInfo(result.subobjStart("authInfo")); { BSONArrayBuilder authenticatedUsers(authInfo.subarrayStart("authenticatedUsers")); UserSet::NameIterator nameIter = authSession->getAuthenticatedUserNames(); for ( ; nameIter.more(); nameIter.next()) { BSONObjBuilder userInfoBuilder(authenticatedUsers.subobjStart()); userInfoBuilder.append("user", nameIter->getUser()); userInfoBuilder.append("userSource", nameIter->getDB()); userInfoBuilder.doneFast(); } authenticatedUsers.doneFast(); } authInfo.doneFast(); return true; }