00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #pragma once
00023
00024 #include <string>
00025
00026 #include <drizzled/plugin.h>
00027 #include <drizzled/plugin/plugin.h>
00028 #include <drizzled/identifier.h>
00029
00030 #include <drizzled/visibility.h>
00031
00032 namespace drizzled
00033 {
00034
00035 namespace identifier {
00036 class User;
00037 }
00038
00039 namespace plugin
00040 {
00041
00042 class DRIZZLED_API Authentication : public Plugin
00043 {
00044 Authentication();
00045 Authentication(const Authentication &);
00046 Authentication& operator=(const Authentication &);
00047 public:
00048 explicit Authentication(std::string name_arg)
00049 : Plugin(name_arg, "Authentication")
00050 {}
00051 virtual ~Authentication() {}
00052
00053 virtual bool authenticate(const identifier::User &sctx,
00054 const std::string &passwd)= 0;
00055
00056 static bool addPlugin(plugin::Authentication *auth);
00057 static void removePlugin(plugin::Authentication *auth);
00058 static bool isAuthenticated(drizzled::identifier::User::const_reference sctx,
00059 const std::string &password);
00060 };
00061
00062 }
00063 }
00064