/* * AuthManager.cpp * * Copyright (C) 2009 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with this program. If not, see . */ #include "AuthManager.h" #include "AuthBackend.h" #include namespace Mad { namespace Common { const std::vector AuthManager::DenyBackend::methods; void AuthManager::registerBackend(boost::shared_ptr newBackend) { boost::lock_guard lock(mutex); backend = newBackend; } void AuthManager::unregisterBackend(boost::shared_ptr oldBackend) { boost::lock_guard lock(mutex); if(oldBackend == backend) backend = denyBackend; } std::vector AuthManager::getMethods() { boost::shared_lock lock(mutex); return backend->getMethods(); } std::vector AuthManager::getSubMethods(const std::string &method) throw(Core::Exception) { boost::shared_lock lock(mutex); return backend->getSubMethods(method); } boost::shared_ptr AuthManager::authenticate(const std::string &method, const std::string &subMethod, const std::string &user, const std::vector &data, std::vector &response, boost::shared_ptr context) throw(Core::Exception) { boost::lock_guard lock(mutex); response.clear(); return backend->authenticate(method, subMethod, user, data, response, context); } } }