summaryrefslogtreecommitdiff
path: root/src/mongo/db/auth/authz_session_external_state_d.cpp
diff options
context:
space:
mode:
authorSpencer T Brody <spencer@10gen.com>2013-05-30 17:00:12 -0400
committerSpencer T Brody <spencer@10gen.com>2013-05-31 17:17:06 -0400
commited8e8bde125c38db215e1fe5dfbdc2ad560ced4e (patch)
tree38a1489661827fede6b525ff43cff158a9f1e174 /src/mongo/db/auth/authz_session_external_state_d.cpp
parent0f97e5ee12313038cc9f0d62184cd98fa80fa790 (diff)
downloadmongo-ed8e8bde125c38db215e1fe5dfbdc2ad560ced4e.tar.gz
Rename Auth[Global,Session]ExternalState
Diffstat (limited to 'src/mongo/db/auth/authz_session_external_state_d.cpp')
-rw-r--r--src/mongo/db/auth/authz_session_external_state_d.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/mongo/db/auth/authz_session_external_state_d.cpp b/src/mongo/db/auth/authz_session_external_state_d.cpp
new file mode 100644
index 00000000000..e53270508df
--- /dev/null
+++ b/src/mongo/db/auth/authz_session_external_state_d.cpp
@@ -0,0 +1,64 @@
+/**
+* Copyright (C) 2012 10gen Inc.
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Affero General Public License, version 3,
+* as published by the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Affero General Public License for more details.
+*
+* You should have received a copy of the GNU Affero General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "mongo/db/auth/authz_session_external_state_d.h"
+
+#include "mongo/base/status.h"
+#include "mongo/client/dbclientinterface.h"
+#include "mongo/db/client.h"
+#include "mongo/db/dbhelpers.h"
+#include "mongo/db/d_concurrency.h"
+#include "mongo/db/instance.h"
+#include "mongo/db/jsobj.h"
+#include "mongo/scripting/engine.h"
+
+namespace mongo {
+
+ AuthzSessionExternalStateMongod::AuthzSessionExternalStateMongod() {}
+ AuthzSessionExternalStateMongod::~AuthzSessionExternalStateMongod() {}
+
+ void AuthzSessionExternalStateMongod::startRequest() {
+ if (!Lock::isLocked()) {
+ _checkShouldAllowLocalhost();
+ }
+ }
+
+ bool AuthzSessionExternalStateMongod::_findUser(const string& usersNamespace,
+ const BSONObj& query,
+ BSONObj* result) const {
+ Client::GodScope gs;
+ Client::ReadContext ctx(usersNamespace);
+
+ return Helpers::findOne(usersNamespace, query, *result);
+ }
+
+ bool AuthzSessionExternalStateMongod::shouldIgnoreAuthChecks() const {
+ return cc().isGod() || AuthzSessionExternalStateServerCommon::shouldIgnoreAuthChecks();
+ }
+
+ void AuthzSessionExternalStateMongod::onAddAuthorizedPrincipal(Principal*) {
+ // invalidate all thread-local JS scopes due to new user authentication
+ if (globalScriptEngine)
+ globalScriptEngine->threadDone();
+ }
+
+ void AuthzSessionExternalStateMongod::onLogoutDatabase(const std::string&) {
+ // invalidate all thread-local JS scopes due to logout
+ if (globalScriptEngine)
+ globalScriptEngine->threadDone();
+ }
+
+} // namespace mongo