diff options
author | Spencer T Brody <spencer@10gen.com> | 2013-09-12 18:31:45 -0400 |
---|---|---|
committer | Spencer T Brody <spencer@10gen.com> | 2013-09-12 18:32:01 -0400 |
commit | 25f1dcbd1fc74198673b9777e203e4547ac74433 (patch) | |
tree | c152d2adefc55d52c2e06b9266746750eba5613d /src/mongo/db/auth/user.cpp | |
parent | 5b4f7a872805ceb8a9360ff1ee5f32848b65394b (diff) | |
download | mongo-25f1dcbd1fc74198673b9777e203e4547ac74433.tar.gz |
SERVER-9518 Change how User objects store their roles and delegatable roles
Diffstat (limited to 'src/mongo/db/auth/user.cpp')
-rw-r--r-- | src/mongo/db/auth/user.cpp | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/mongo/db/auth/user.cpp b/src/mongo/db/auth/user.cpp index e5a39e43c58..adaae0f1313 100644 --- a/src/mongo/db/auth/user.cpp +++ b/src/mongo/db/auth/user.cpp @@ -23,6 +23,7 @@ #include "mongo/db/auth/user_name.h" #include "mongo/platform/atomic_word.h" #include "mongo/util/assert_util.h" +#include "db/auth/role_name.h" namespace mongo { @@ -35,17 +36,8 @@ namespace mongo { return _name; } - const RoleNameIterator User::getRoles() const { - return RoleNameIterator(new RoleNameSetIterator(_roles.begin(), _roles.end())); - } - - const RoleNameIterator User::getDelegatableRoles() const { - return RoleNameIterator(new RoleNameSetIterator(_delegatableRoles.begin(), - _delegatableRoles.end())); - } - - bool User::canDelegateRole(const RoleName& role) const { - return _delegatableRoles.count(role); + const User::RoleDataMap& User::getRoles() const { + return _roles; } const User::CredentialData& User::getCredentials() const { @@ -81,23 +73,31 @@ namespace mongo { _credentials = credentials; } - void User::addRole(const RoleName& role) { - _roles.insert(role); + void User::addRole(const RoleName& roleName) { + RoleData& role = _roles[roleName]; + if (role.name.empty()) { + role.name = roleName; + } + role.hasRole = true; } void User::addRoles(const std::vector<RoleName>& roles) { for (std::vector<RoleName>::const_iterator it = roles.begin(); it != roles.end(); ++it) { - _roles.insert(*it); + addRole(*it); } } - void User::addDelegatableRole(const RoleName& role) { - _delegatableRoles.insert(role); + void User::addDelegatableRole(const RoleName& roleName) { + RoleData& role = _roles[roleName]; + if (role.name.empty()) { + role.name = roleName; + } + role.canDelegate = true; } void User::addDelegatableRoles(const std::vector<RoleName>& roles) { for (std::vector<RoleName>::const_iterator it = roles.begin(); it != roles.end(); ++it) { - _delegatableRoles.insert(*it); + addDelegatableRole(*it); } } |