summaryrefslogtreecommitdiff
path: root/src/mongo/db/dbwebserver.cpp
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2014-05-23 13:17:22 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2014-05-28 16:13:48 -0400
commit0672061deb58aac931912bed68d014247c581968 (patch)
tree5ef08865cb578ee3f46995809b9ac6c7eb3e13df /src/mongo/db/dbwebserver.cpp
parentee3fb776c7f36d59b593db7e4165b0611a7a503f (diff)
downloadmongo-0672061deb58aac931912bed68d014247c581968.tar.gz
SERVER-13961 Pass LockState to DBWrite and DBRead directly
This is part of the changes to move LockState be part of OperationContext and not retrieved from TLS.
Diffstat (limited to 'src/mongo/db/dbwebserver.cpp')
-rw-r--r--src/mongo/db/dbwebserver.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/mongo/db/dbwebserver.cpp b/src/mongo/db/dbwebserver.cpp
index 26a0758ed67..66fbfeeebcd 100644
--- a/src/mongo/db/dbwebserver.cpp
+++ b/src/mongo/db/dbwebserver.cpp
@@ -99,13 +99,17 @@ namespace mongo {
ss << "</pre>";
}
- void _authorizePrincipal(const UserName& userName) {
- Status status = cc().getAuthorizationSession()->addAndAuthorizeUser(userName);
+ void _authorizePrincipal(OperationContext* txn, const UserName& userName) {
+ Status status = cc().getAuthorizationSession()->addAndAuthorizeUser(txn, userName);
uassertStatusOK(status);
}
- bool allowed( const char * rq , vector<string>& headers, const SockAddr &from ) {
- if ( from.isLocalHost() || !_webUsers->haveAdminUsers() ) {
+ bool allowed(OperationContext* txn,
+ const char * rq,
+ vector<string>& headers,
+ const SockAddr &from) {
+
+ if ( from.isLocalHost() || !_webUsers->haveAdminUsers(txn) ) {
// TODO(spencer): should the above check use "&&" not "||"? Currently this is much
// more permissive than the server's localhost auth bypass.
cc().getAuthorizationSession()->grantInternalAuthorization();
@@ -131,7 +135,7 @@ namespace mongo {
User* user;
AuthorizationManager& authzManager =
cc().getAuthorizationSession()->getAuthorizationManager();
- Status status = authzManager.acquireUser(userName, &user);
+ Status status = authzManager.acquireUser(txn, userName, &user);
if (!status.isOK()) {
if (status.code() != ErrorCodes::UserNotFound) {
uasserted(17051, status.reason());
@@ -159,7 +163,7 @@ namespace mongo {
string r1 = md5simpledigest( r.str() );
if ( r1 == parms["response"] ) {
- _authorizePrincipal(userName);
+ _authorizePrincipal(txn, userName);
return true;
}
}
@@ -191,7 +195,7 @@ namespace mongo {
if ( url.size() > 1 ) {
- if ( ! allowed( rq , headers, from ) ) {
+ if (!allowed(txn.get(), rq, headers, from)) {
responseCode = 401;
headers.push_back( "Content-Type: text/plain;charset=utf-8" );
responseMsg = "not allowed\n";
@@ -240,7 +244,7 @@ namespace mongo {
// generate home page
- if ( ! allowed( rq , headers, from ) ) {
+ if (!allowed(txn.get(), rq, headers, from)) {
responseCode = 401;
headers.push_back( "Content-Type: text/plain;charset=utf-8" );
responseMsg = "not allowed\n";