Wt examples 3.3.12
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
Session Class Reference

#include <Session.h>

Public Member Functions

 Session ()
 
 ~Session ()
 
Wt::Auth::AbstractUserDatabaseusers ()
 
Wt::Auth::Loginlogin ()
 
std::vector< UsertopUsers (int limit)
 
std::string userName () const
 
int findRanking ()
 
void addToScore (int s)
 

Static Public Member Functions

static void configureAuth ()
 
static const Wt::Auth::AuthServiceauth ()
 
static const Wt::Auth::AbstractPasswordServicepasswordAuth ()
 
static const std::vector< const Wt::Auth::OAuthService * > & oAuth ()
 

Private Member Functions

Wt::Dbo::ptr< Useruser () const
 

Private Attributes

Wt::Dbo::backend::Sqlite3 sqlite3_
 
Wt::Dbo::Session session_
 
UserDatabaseusers_
 
Wt::Auth::Login login_
 

Detailed Description

Definition at line 23 of file Session.h.

Constructor & Destructor Documentation

◆ Session()

Session::Session ( )

Definition at line 98 of file Session.C.

99 : sqlite3_(WApplication::instance()->appRoot() + "hangman.db")
100{
102 sqlite3_.setProperty("show-queries", "true");
103
104 session_.mapClass<User>("user");
105 session_.mapClass<AuthInfo>("auth_info");
108
110
111 dbo::Transaction transaction(session_);
112 try {
114
115 /*
116 * Add a default guest/guest account
117 */
118 Auth::User guestUser = users_->registerNew();
119 guestUser.addIdentity(Auth::Identity::LoginName, "guest");
120 myPasswordService.updatePassword(guestUser, "guest");
121
122 Wt::log("info") << "Database created";
123 } catch (...) {
124 Wt::log("info") << "Using existing database";
125 }
126
127 transaction.commit();
128}
Wt::Auth::Dbo::UserDatabase< AuthInfo > UserDatabase
Definition Session.h:21
Wt::Dbo::backend::Sqlite3 sqlite3_
Definition Session.h:48
UserDatabase * users_
Definition Session.h:50
Wt::Dbo::Session session_
Definition Session.h:49
Definition User.h:23
static const std::string LoginName
void addIdentity(const std::string &provider, const WString &identity)
void mapClass(const char *tableName)
void setConnection(SqlConnection &connection)
void setProperty(const std::string &name, const std::string &value)

◆ ~Session()

Session::~Session ( )

Definition at line 130 of file Session.C.

131{
132 delete users_;
133}

Member Function Documentation

◆ addToScore()

void Session::addToScore ( int  s)

Definition at line 159 of file Session.C.

160{
161 dbo::Transaction transaction(session_);
162
163 dbo::ptr<User> u = user();
164 if (u) {
165 u.modify()->score += s;
166 ++u.modify()->gamesPlayed;
167 u.modify()->lastGame = WDateTime::currentDateTime();
168 }
169
170 transaction.commit();
171}
Wt::Dbo::ptr< User > user() const
Definition Session.C:135
C * modify() const
static WDateTime currentDateTime()

◆ auth()

const Auth::AuthService & Session::auth ( )
static

Definition at line 216 of file Session.C.

217{
218 return myAuthService;
219}

◆ configureAuth()

void Session::configureAuth ( )
static

Definition at line 76 of file Session.C.

77{
78 myAuthService.setAuthTokensEnabled(true, "hangmancookie");
79 myAuthService.setEmailVerificationEnabled(true);
80
83
84#ifdef HAVE_CRYPT
85 // We want to still support users registered in the pre - Wt::Auth
86 // version of the hangman example
87 verifier->addHashFunction(new UnixCryptHashFunction());
88#endif
89
90 myPasswordService.setVerifier(verifier);
91 myPasswordService.setStrengthValidator(new Auth::PasswordStrengthValidator());
92 myPasswordService.setAttemptThrottlingEnabled(true);
93
95 myOAuthServices.push_back(new Auth::GoogleService(myAuthService));
96}
static bool configured()
void addHashFunction(HashFunction *function)

◆ findRanking()

int Session::findRanking ( )

Definition at line 195 of file Session.C.

196{
197 dbo::Transaction transaction(session_);
198
199 dbo::ptr<User> u = user();
200 int ranking = -1;
201
202 if (u)
203 ranking = session_.query<int>("select distinct count(score) from user")
204 .where("score > ?").bind(u->score);
205
206 transaction.commit();
207
208 return ranking + 1;
209}
Query< Result, BindStrategy > query(const std::string &sql)

◆ login()

Wt::Auth::Login & Session::login ( )
inline

Definition at line 32 of file Session.h.

32{ return login_; }
Wt::Auth::Login login_
Definition Session.h:51

◆ oAuth()

const std::vector< const Auth::OAuthService * > & Session::oAuth ( )
static

Definition at line 226 of file Session.C.

227{
228 return myOAuthServices;
229}

◆ passwordAuth()

const Auth::AbstractPasswordService & Session::passwordAuth ( )
static

Definition at line 221 of file Session.C.

222{
223 return myPasswordService;
224}

◆ topUsers()

std::vector< User > Session::topUsers ( int  limit)

Definition at line 173 of file Session.C.

174{
175 dbo::Transaction transaction(session_);
176
177 Users top = session_.find<User>().orderBy("score desc").limit(limit);
178
179 std::vector<User> result;
180 for (Users::const_iterator i = top.begin(); i != top.end(); ++i) {
181 dbo::ptr<User> user = *i;
182 result.push_back(*user);
183
184 dbo::ptr<AuthInfo> auth = *user->authInfos.begin();
185 std::string name = auth->identity(Auth::Identity::LoginName).toUTF8();
186
187 result.back().name = name;
188 }
189
190 transaction.commit();
191
192 return result;
193}
static const Wt::Auth::AuthService & auth()
Definition Session.C:216
Query< ptr< C >, BindStrategy > find(const std::string &condition=std::string())

◆ user()

dbo::ptr< User > Session::user ( ) const
private

Definition at line 135 of file Session.C.

136{
137 if (login_.loggedIn()) {
139 dbo::ptr<User> user = authInfo->user();
140
141 if (!user) {
142 user = session_.add(new User());
143 authInfo.modify()->setUser(user);
144 }
145
146 return user;
147 } else
148 return dbo::ptr<User>();
149}
Wt::Dbo::ptr< DboType > find(const User &user) const
const User & user() const
bool loggedIn() const
ptr< C > add(ptr< C > &ptr)

◆ userName()

std::string Session::userName ( ) const

Definition at line 151 of file Session.C.

152{
153 if (login_.loggedIn())
155 else
156 return std::string();
157}
WString identity(const std::string &provider) const
std::string toUTF8() const

◆ users()

Auth::AbstractUserDatabase & Session::users ( )

Definition at line 211 of file Session.C.

212{
213 return *users_;
214}

Member Data Documentation

◆ login_

Wt::Auth::Login Session::login_
private

Definition at line 51 of file Session.h.

◆ session_

Wt::Dbo::Session Session::session_
mutableprivate

Definition at line 49 of file Session.h.

◆ sqlite3_

Wt::Dbo::backend::Sqlite3 Session::sqlite3_
private

Definition at line 48 of file Session.h.

◆ users_

UserDatabase* Session::users_
private

Definition at line 50 of file Session.h.


The documentation for this class was generated from the following files:

Generated on Fri May 17 2024 for the C++ Web Toolkit (Wt) by doxygen 1.9.8