From 4870a01b7976362d3836ba0d56291f01b7f2e6af Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Tue, 9 Nov 2010 21:15:03 +0000 Subject: 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 --- cpp/src/qpid/management/Manageable.cpp | 5 +++++ cpp/src/qpid/management/ManagementAgent.cpp | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'cpp/src/qpid/management') 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 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 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(); -- cgit v1.2.1