00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #pragma once
00021 #include <drizzled/session.h>
00022 #include <drizzled/plugin/authentication.h>
00023 #include PCRE_HEADER
00024
00025 using namespace std;
00026 using namespace drizzled;
00027
00028 namespace drizzle_plugin {
00029 namespace auth_schema {
00030
00031 class AuthSchema : public drizzled::plugin::Authentication
00032 {
00033 public:
00034 AuthSchema(bool enabled);
00035 ~AuthSchema();
00036
00046 bool setTable(const string &table);
00047
00053 bool sysvar_enabled;
00054 string sysvar_table;
00055
00056 private:
00060 bool authenticate(const identifier::User &sctx, const string &password);
00061
00083 bool verifyMySQLPassword(const string &real_password,
00084 const string &scramble_bytes,
00085 const string &client_password);
00086
00104 string escapeQuoteAuthTable(const string &table);
00105
00114 string escapeQuoteIdentifier(const string &input);
00115
00129 string escapeString(const string &input);
00130
00131 pcre *_ident_re;
00132 Session::shared_ptr _session;
00133 };
00134
00135 }
00136 }