Wt examples
3.2.2
|
#include <Session.h>
Public Member Functions | |
Session () | |
~Session () | |
Wt::Auth::AbstractUserDatabase & | users () |
Wt::Auth::Login & | login () |
std::vector< User > | topUsers (int limit) |
std::string | userName () const |
int | findRanking () |
void | addToScore (int s) |
Static Public Member Functions | |
static void | configureAuth () |
static const Wt::Auth::AuthService & | auth () |
static const Wt::Auth::AbstractPasswordService & | passwordAuth () |
static const std::vector < const Wt::Auth::OAuthService * > & | oAuth () |
Private Member Functions | |
Wt::Dbo::ptr< User > | user () const |
Private Attributes | |
Wt::Dbo::backend::Sqlite3 | sqlite3_ |
Wt::Dbo::Session | session_ |
UserDatabase * | users_ |
Wt::Auth::Login | login_ |
Session::Session | ( | ) |
Definition at line 95 of file Session.C.
: sqlite3_(WApplication::instance()->appRoot() + "hangman.db") { session_.setConnection(sqlite3_); sqlite3_.setProperty("show-queries", "true"); session_.mapClass<User>("user"); session_.mapClass<AuthInfo>("auth_info"); session_.mapClass<AuthInfo::AuthIdentityType>("auth_identity"); session_.mapClass<AuthInfo::AuthTokenType>("auth_token"); users_ = new UserDatabase(session_); dbo::Transaction transaction(session_); try { session_.createTables(); /* * Add a default guest/guest account */ Auth::User guestUser = users_->registerNew(); guestUser.addIdentity(Auth::Identity::LoginName, "guest"); myPasswordService.updatePassword(guestUser, "guest"); Wt::log("info") << "Database created"; } catch (...) { Wt::log("info") << "Using existing database"; } transaction.commit(); }
void Session::addToScore | ( | int | s | ) |
Definition at line 156 of file Session.C.
{ dbo::Transaction transaction(session_); dbo::ptr<User> u = user(); if (u) { u.modify()->score += s; ++u.modify()->gamesPlayed; u.modify()->lastGame = WDateTime::currentDateTime(); } transaction.commit(); }
const Auth::AuthService & Session::auth | ( | ) | [static] |
void Session::configureAuth | ( | ) | [static] |
Definition at line 73 of file Session.C.
{ myAuthService.setAuthTokensEnabled(true, "hangmancookie"); myAuthService.setEmailVerificationEnabled(true); Auth::PasswordVerifier *verifier = new Auth::PasswordVerifier(); verifier->addHashFunction(new Auth::BCryptHashFunction(7)); #ifdef HAVE_CRYPT // We want to still support users registered in the pre - Wt::Auth // version of the hangman example verifier->addHashFunction(new UnixCryptHashFunction()); #endif myPasswordService.setVerifier(verifier); myPasswordService.setStrengthValidator(new Auth::PasswordStrengthValidator()); myPasswordService.setAttemptThrottlingEnabled(true); if (Auth::GoogleService::configured()) myOAuthServices.push_back(new Auth::GoogleService(myAuthService)); }
int Session::findRanking | ( | ) |
Definition at line 192 of file Session.C.
{ dbo::Transaction transaction(session_); dbo::ptr<User> u = user(); int ranking = -1; if (u) ranking = session_.query<int>("select distinct count(score) from user") .where("score > ?").bind(u->score); transaction.commit(); return ranking + 1; }
Wt::Auth::Login& Session::login | ( | ) | [inline] |
const std::vector< const Auth::OAuthService * > & Session::oAuth | ( | ) | [static] |
const Auth::AbstractPasswordService & Session::passwordAuth | ( | ) | [static] |
std::vector< User > Session::topUsers | ( | int | limit | ) |
Definition at line 170 of file Session.C.
{ dbo::Transaction transaction(session_); Users top = session_.find<User>().orderBy("score desc").limit(20); std::vector<User> result; for (Users::const_iterator i = top.begin(); i != top.end(); ++i) { dbo::ptr<User> user = *i; result.push_back(*user); dbo::ptr<AuthInfo> auth = *user->authInfos.begin(); std::string name = auth->identity(Auth::Identity::LoginName).toUTF8(); result.back().name = name; } transaction.commit(); return result; }
std::string Session::userName | ( | ) | const |
Auth::AbstractUserDatabase & Session::users | ( | ) |
Wt::Auth::Login Session::login_ [private] |
Wt::Dbo::Session Session::session_ [mutable, private] |
Wt::Dbo::backend::Sqlite3 Session::sqlite3_ [private] |
UserDatabase* Session::users_ [private] |