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)
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")
120 myPasswordService.updatePassword(guestUser,
"guest");
122 Wt::log(
"info") <<
"Database created";
124 Wt::log(
"info") <<
"Using existing database";
156 return std::string();
166 ++u.
modify()->gamesPlayed;
179 std::vector<User> result;
182 result.push_back(*
user);
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;
Wt::Auth::Dbo::UserDatabase< AuthInfo > UserDatabase
static void configureAuth()
static const Wt::Auth::AbstractPasswordService & passwordAuth()
Wt::Dbo::backend::Sqlite3 sqlite3_
static const std::vector< const Wt::Auth::OAuthService * > & oAuth()
std::vector< User > topUsers(int limit)
std::string userName() const
Wt::Dbo::Session session_
static const Wt::Auth::AuthService & auth()
Wt::Dbo::ptr< User > user() const
Wt::Auth::AbstractUserDatabase & users()
Wt::Dbo::ptr< DboType > find(const User &user) const
virtual User registerNew()
static const std::string LoginName
const User & user() const
void addHashFunction(HashFunction *function)
void addIdentity(const std::string &provider, const WString &identity)
WString identity(const std::string &provider) const
Query< ptr< C >, BindStrategy > find(const std::string &condition=std::string())
void mapClass(const char *tableName)
Query< Result, BindStrategy > query(const std::string &sql)
ptr< C > add(ptr< C > &ptr)
void setConnection(SqlConnection &connection)
void setProperty(const std::string &name, const std::string &value)
static WDateTime currentDateTime()
std::string toUTF8() const