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(WIN32) && !defined(__CYGWIN__) && !defined(ANDROID)
30 namespace dbo = Wt::Dbo;
38 virtual std::string compute(
const std::string& msg,
39 const std::string& salt)
const
41 std::string md5Salt =
"$1$" + salt;
42 return crypt(msg.c_str(), md5Salt.c_str());
45 virtual bool verify(
const std::string& msg,
46 const std::string& salt,
47 const std::string& hash)
const
49 return crypt(msg.c_str(), hash.c_str()) == hash;
52 virtual std::string name ()
const {
58 class MyOAuth :
public std::vector<const Auth::OAuthService *>
63 for (
unsigned i = 0; i < size(); ++i)
70 MyOAuth myOAuthServices;
75 myAuthService.setAuthTokensEnabled(
true,
"hangmancookie");
76 myAuthService.setEmailVerificationEnabled(
true);
87 myPasswordService.setVerifier(verifier);
89 myPasswordService.setAttemptThrottlingEnabled(
true);
96 : sqlite3_(
WApplication::instance()->appRoot() +
"hangman.db")
99 sqlite3_.setProperty(
"show-queries",
"true");
116 guestUser.
addIdentity(Auth::Identity::LoginName,
"guest");
117 myPasswordService.updatePassword(guestUser,
"guest");
119 Wt::log(
"info") <<
"Database created";
121 Wt::log(
"info") <<
"Using existing database";
153 return std::string();
176 std::vector<User> result;
179 result.push_back(*user);
182 std::string name = auth->
identity(Auth::Identity::LoginName).
toUTF8();
184 result.back().name = name;
200 ranking =
session_.
query<
int>(
"select distinct count(score) from user")
201 .where(
"score > ?").bind(u->
score);
215 return myAuthService;
220 return myPasswordService;
225 return myOAuthServices;