00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <config.h>
00022 #include <boost/foreach.hpp>
00023 #include <drizzled/plugin/authentication.h>
00024 #include <drizzled/error.h>
00025 #include <drizzled/gettext.h>
00026 #include <drizzled/identifier.h>
00027 #include <vector>
00028
00029 namespace drizzled {
00030
00031 static std::vector<plugin::Authentication*> all_authentication;
00032
00033 bool plugin::Authentication::addPlugin(plugin::Authentication* auth)
00034 {
00035 if (auth)
00036 all_authentication.push_back(auth);
00037 return false;
00038 }
00039
00040 void plugin::Authentication::removePlugin(plugin::Authentication* auth)
00041 {
00042 all_authentication.erase(std::find(all_authentication.begin(), all_authentication.end(), auth));
00043 }
00044
00045 bool plugin::Authentication::isAuthenticated(const drizzled::identifier::User& sctx, const std::string& password)
00046 {
00047 BOOST_FOREACH(plugin::Authentication* auth, all_authentication)
00048 {
00049 if (auth->authenticate(sctx, password))
00050 return true;
00051 }
00052 error::access(sctx);
00053 return false;
00054 }
00055
00056 }