diff options
| author | Ted Ross <tross@apache.org> | 2010-11-09 21:15:03 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2010-11-09 21:15:03 +0000 |
| commit | 4870a01b7976362d3836ba0d56291f01b7f2e6af (patch) | |
| tree | 921b002956ec18c7fe5602b0641e9dd8395b7f98 /cpp/src/qpid/management | |
| parent | d282da7e6f515ded59a76b4dfbc2bedab8f7f6d7 (diff) | |
| download | qpid-python-4870a01b7976362d3836ba0d56291f01b7f2e6af.tar.gz | |
QPID-2934 Feature to pass the authenticated userId to QMF agent method handlers for authorization
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1033232 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/management')
| -rw-r--r-- | cpp/src/qpid/management/Manageable.cpp | 5 | ||||
| -rw-r--r-- | cpp/src/qpid/management/ManagementAgent.cpp | 8 |
2 files changed, 9 insertions, 4 deletions
diff --git a/cpp/src/qpid/management/Manageable.cpp b/cpp/src/qpid/management/Manageable.cpp index a3593e73e3..651215ffb5 100644 --- a/cpp/src/qpid/management/Manageable.cpp +++ b/cpp/src/qpid/management/Manageable.cpp @@ -46,3 +46,8 @@ Manageable::status_t Manageable::ManagementMethod (uint32_t, Args&, std::string& return STATUS_UNKNOWN_METHOD; } +bool Manageable::AuthorizeMethod(uint32_t, Args&, const std::string&) +{ + return true; +} + diff --git a/cpp/src/qpid/management/ManagementAgent.cpp b/cpp/src/qpid/management/ManagementAgent.cpp index 09494f1d8e..f33ebcd68d 100644 --- a/cpp/src/qpid/management/ManagementAgent.cpp +++ b/cpp/src/qpid/management/ManagementAgent.cpp @@ -1083,8 +1083,8 @@ void ManagementAgent::handleMethodRequestLH(Buffer& inBuffer, const string& repl return; } + string userId = ((const qpid::broker::ConnectionState*) connToken)->getUserId(); if (acl != 0) { - string userId = ((const qpid::broker::ConnectionState*) connToken)->getUserId(); map<acl::Property, string> params; params[acl::PROP_SCHEMAPACKAGE] = packageName; params[acl::PROP_SCHEMACLASS] = className; @@ -1115,7 +1115,7 @@ void ManagementAgent::handleMethodRequestLH(Buffer& inBuffer, const string& repl outBuffer.record(); sys::Mutex::ScopedUnlock u(userLock); string outBuf; - iter->second->doMethod(methodName, inArgs, outBuf); + iter->second->doMethod(methodName, inArgs, outBuf, userId); outBuffer.putRawData(outBuf); } catch(exception& e) { outBuffer.restore(); @@ -1193,8 +1193,8 @@ void ManagementAgent::handleMethodRequestLH (const string& body, const string& r return; } + string userId = ((const qpid::broker::ConnectionState*) connToken)->getUserId(); if (acl != 0) { - string userId = ((const qpid::broker::ConnectionState*) connToken)->getUserId(); map<acl::Property, string> params; params[acl::PROP_SCHEMAPACKAGE] = iter->second->getPackageName(); params[acl::PROP_SCHEMACLASS] = iter->second->getClassName(); @@ -1214,7 +1214,7 @@ void ManagementAgent::handleMethodRequestLH (const string& body, const string& r try { sys::Mutex::ScopedUnlock u(userLock); - iter->second->doMethod(methodName, inArgs, callMap); + iter->second->doMethod(methodName, inArgs, callMap, userId); errorCode = callMap["_status_code"].asUint32(); if (errorCode == 0) { outMap["_arguments"] = Variant::Map(); |
