9 #include "Wt/Auth/AuthService" 10 #include "Wt/Auth/HashFunction" 11 #include "Wt/Auth/PasswordService" 12 #include "Wt/Auth/PasswordStrengthValidator" 13 #include "Wt/Auth/PasswordVerifier" 14 #include "Wt/Auth/GoogleService" 15 #include "Wt/Auth/Dbo/AuthInfo" 16 #include "Wt/Auth/Dbo/UserDatabase" 18 #include <Wt/WApplication> 25 #if !defined(WT_WIN32) && !defined(__CYGWIN__) && !defined(ANDROID) 29 #endif // _XOPEN_CRYPT 41 virtual std::string compute(
const std::string& msg,
42 const std::string& salt)
const 44 std::string md5Salt =
"$1$" + salt;
45 return crypt(msg.c_str(), md5Salt.c_str());
48 virtual bool verify(
const std::string& msg,
49 const std::string& salt,
50 const std::string& hash)
const 52 return crypt(msg.c_str(), hash.c_str()) == hash;
55 virtual std::string name ()
const {
61 class MyOAuth :
public std::vector<const Auth::OAuthService *>
66 for (
unsigned i = 0; i < size(); ++i)
73 MyOAuth myOAuthServices;
78 myAuthService.setAuthTokensEnabled(
true,
"hangmancookie");
79 myAuthService.setEmailVerificationEnabled(
true);
90 myPasswordService.setVerifier(verifier);
92 myPasswordService.setAttemptThrottlingEnabled(
true);
99 : sqlite3_(
WApplication::instance()->appRoot() +
"hangman.db")
119 guestUser.
addIdentity(Auth::Identity::LoginName,
"guest");
120 myPasswordService.updatePassword(guestUser,
"guest");
122 Wt::log(
"info") <<
"Database created";
124 Wt::log(
"info") <<
"Using existing database";
156 return std::string();
179 std::vector<User> result;
182 result.push_back(*user);
185 std::string name = auth->
identity(Auth::Identity::LoginName).
toUTF8();
187 result.back().name = name;
203 ranking =
session_.
query<
int>(
"select distinct count(score) from user")
204 .where(
"score > ?").bind(u->
score);
218 return myAuthService;
223 return myPasswordService;
228 return myOAuthServices;
void addHashFunction(std::unique_ptr< HashFunction > function)
ptr< C > add(ptr< C > &ptr)
Query< ptr< C >, BindStrategy > find(const std::string &condition=std::string())
WString identity(const std::string &provider) const
Wt::Auth::Dbo::UserDatabase< AuthInfo > UserDatabase
std::string userName() const
WString identity(const std::string &provider) const
Wt::Auth::AbstractUserDatabase & users()
static const Wt::Auth::AuthService & auth()
Wt::Dbo::Session session_
Wt::Dbo::ptr< DboType > find(const User &user) const
std::string toUTF8() const
void setUser(Wt::Dbo::ptr< UserType > user)
static const std::vector< const Wt::Auth::OAuthService * > & oAuth()
Wt::Dbo::backend::Sqlite3 sqlite3_
static void configureAuth()
const User & user() const
Wt::Dbo::ptr< UserType > user() const
void addIdentity(const std::string &provider, const WString &identity)
Wt::Dbo::ptr< User > user() const
Wt::Dbo::collection< Wt::Dbo::ptr< AuthInfo > > authInfos
void mapClass(const char *tableName)
std::vector< User > topUsers(int limit)
static const Wt::Auth::AbstractPasswordService & passwordAuth()
void setConnection(std::unique_ptr< SqlConnection > connection)
Query< Result, BindStrategy > query(const std::string &sql)
void setProperty(const std::string &name, const std::string &value)