#pragma once using namespace std; #include #include #include inline string narrowStr(const wstring &w) { return string(w.begin(), w.end()); } class AuthModule { public: virtual ~AuthModule() = default; virtual const wchar_t *schemeName() = 0; virtual vector supportedVariations() = 0; virtual vector> getSettings(const wstring &variation) = 0; virtual bool onAuthData(const vector> &fields, wstring &outUid, wstring &outUsername) = 0; bool validate(const wstring &uid, const wstring &username); protected: bool extractIdentity(const vector> &fields, wstring &outUid, wstring &outUsername); };