summaryrefslogtreecommitdiff
path: root/src/mongo/db/auth/user.cpp
diff options
context:
space:
mode:
authorSpencer T Brody <spencer@10gen.com>2013-09-12 18:31:45 -0400
committerSpencer T Brody <spencer@10gen.com>2013-09-12 18:32:01 -0400
commit25f1dcbd1fc74198673b9777e203e4547ac74433 (patch)
treec152d2adefc55d52c2e06b9266746750eba5613d /src/mongo/db/auth/user.cpp
parent5b4f7a872805ceb8a9360ff1ee5f32848b65394b (diff)
downloadmongo-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.cpp34
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);
}
}