<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>Wt: Wt::Auth::Dbo::UserDatabase< DboType > Class Template Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="search/search.js"></script> <script type="text/javascript"> $(document).ready(function() { searchBox.OnSelectItem(0); }); </script> </head> <body> <div id="top"><!-- do not remove this div! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">Wt  <span id="projectnumber">3.2.3</span> </div> </td> </tr> </tbody> </table> </div> <!-- Generated by Doxygen 1.7.5.1 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <span class="left"> <img id="MSearchSelect" src="search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> </span><span class="right"> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </span> </div> </li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="namespaceWt.html">Wt</a> </li> <li class="navelem"><a class="el" href="namespaceWt_1_1Auth.html">Auth</a> </li> <li class="navelem"><b>Dbo</b> </li> <li class="navelem"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">UserDatabase</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> </div> <div class="headertitle"> <div class="title">Wt::Auth::Dbo::UserDatabase< DboType > Class Template Reference<div class="ingroups"><a class="el" href="group__auth.html">Authentication module (Wt::Auth)</a></div></div> </div> </div> <div class="contents"> <!-- doxytag: class="Wt::Auth::Dbo::UserDatabase" --><!-- doxytag: inherits="Wt::Auth::AbstractUserDatabase" --> <p>A default implementation for a authentication data in Wt::Dbo. <a href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#details">More...</a></p> <p><code>#include <Wt/Auth/Dbo/UserDatabase></code></p> <div class="dynheader"> Inheritance diagram for Wt::Auth::Dbo::UserDatabase< DboType >:</div> <div class="dyncontent"> <div class="center"><img src="classWt_1_1Auth_1_1Dbo_1_1UserDatabase__inherit__graph.png" border="0" usemap="#Wt_1_1Auth_1_1Dbo_1_1UserDatabase_3_01DboType_01_4_inherit__map" alt="Inheritance graph"/></div> <map name="Wt_1_1Auth_1_1Dbo_1_1UserDatabase_3_01DboType_01_4_inherit__map" id="Wt_1_1Auth_1_1Dbo_1_1UserDatabase_3_01DboType_01_4_inherit__map"> <area shape="rect" href="classWt_1_1Auth_1_1AbstractUserDatabase.html" title="Abstract interface for an authentication user database." alt="" coords="35,5,245,32"/></map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <p><a href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af67258895f54effd1bca5a4df6bf0849"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::UserDatabase" ref="af67258895f54effd1bca5a4df6bf0849" args="(Wt::Dbo::Session &session)" -->  </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#af67258895f54effd1bca5a4df6bf0849">UserDatabase</a> (<a class="el" href="classWt_1_1Dbo_1_1Session.html">Wt::Dbo::Session</a> &session)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase_1_1Transaction.html">Transaction</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a45bb818735ce31769dad03ead2630ce4">startTransaction</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new database transaction. <a href="#a45bb818735ce31769dad03ead2630ce4"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a061113cf6fe3f05cd26a47a853f1a71c"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::find" ref="a061113cf6fe3f05cd26a47a853f1a71c" args="(const User &user) const " --> <a class="el" href="classWt_1_1Dbo_1_1ptr.html">Wt::Dbo::ptr</a>< DboType > </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a061113cf6fe3f05cd26a47a853f1a71c">find</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Dbo user type corresponding to an <a class="el" href="classWt_1_1Auth_1_1User.html" title="A user.">Auth::User</a>. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4396e171538436295d273df4ed648b59"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::find" ref="a4396e171538436295d273df4ed648b59" args="(const Wt::Dbo::ptr< DboType > user) const " --> <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a4396e171538436295d273df4ed648b59">find</a> (const <a class="el" href="classWt_1_1Dbo_1_1ptr.html">Wt::Dbo::ptr</a>< DboType > user) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the <a class="el" href="classWt_1_1Auth_1_1User.html" title="A user.">Auth::User</a> corresponding to a Dbo user. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a1399d167a43b3c63f1f7ebe79abeba4e">findWithId</a> (const std::string &id) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Finds a user with a given id. <a href="#a1399d167a43b3c63f1f7ebe79abeba4e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a424b0a6527e1316f9684e1956232c8ad">findWithIdentity</a> (const std::string &provider, const <a class="el" href="classWt_1_1WString.html">WString</a> &identity) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Finds a user with a given identity. <a href="#a424b0a6527e1316f9684e1956232c8ad"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1WString.html">WString</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a58b5b1ea88ed322f54dabd923bbb53dd">identity</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user, const std::string &provider) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a user identity. <a href="#a58b5b1ea88ed322f54dabd923bbb53dd"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a74f53d62b49a0be5b46456a2373d3ba7">registerNew</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Registers a new user. <a href="#a74f53d62b49a0be5b46456a2373d3ba7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a5b2ede866d7e93f17d8bd1183d255854">deleteUser</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Delete a user. <a href="#a5b2ede866d7e93f17d8bd1183d255854"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1Auth_1_1User.html#ac8a61657a320eef6ae6e2c394bdd4437">User::Status</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a9a0ca45665d71eaa6cfceba977099b2d">status</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the status for a user. <a href="#a9a0ca45665d71eaa6cfceba977099b2d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a285ce48322c12e4e51e7fadbc3755574">setPassword</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user, const <a class="el" href="classWt_1_1Auth_1_1PasswordHash.html">PasswordHash</a> &password)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a new user password. <a href="#a285ce48322c12e4e51e7fadbc3755574"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1Auth_1_1PasswordHash.html">PasswordHash</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a577c4170630f85ab0b2424bd0d0271ef">password</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a user password. <a href="#a577c4170630f85ab0b2424bd0d0271ef"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a92990ca73bd79b9558394d96e5b53abf">addIdentity</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user, const std::string &provider, const <a class="el" href="classWt_1_1WString.html">WString</a> &identity)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets an identifier for the user. <a href="#a92990ca73bd79b9558394d96e5b53abf"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a07362974d7709189d7b9ae38cf726fb1">setEmail</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user, const std::string &address)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a user's email address. <a href="#a07362974d7709189d7b9ae38cf726fb1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a5fba94f7ad74b08bde2d76e1782923e6">email</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a user's email address. <a href="#a5fba94f7ad74b08bde2d76e1782923e6"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a4dd5ba163f90e1e91ae3d4a5b372812c">setUnverifiedEmail</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user, const std::string &address)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a user's unverified email address. <a href="#a4dd5ba163f90e1e91ae3d4a5b372812c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#ab9c9fed997b9ff17b00c5101eef95153">unverifiedEmail</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a user's unverified email address. <a href="#ab9c9fed997b9ff17b00c5101eef95153"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a12419c6b03ae0308f4061277f7835613">findWithEmail</a> (const std::string &address) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Finds a user with a given email address. <a href="#a12419c6b03ae0308f4061277f7835613"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a4dfd0cf66dce6b42f51063549c2402fd">setEmailToken</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user, const <a class="el" href="classWt_1_1Auth_1_1Token.html">Token</a> &token, <a class="el" href="classWt_1_1Auth_1_1User.html#a9156dfab4821e49aa7e109f3f1a2674b">User::EmailTokenRole</a> role)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a new email token for a user. <a href="#a4dfd0cf66dce6b42f51063549c2402fd"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1Auth_1_1Token.html">Token</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#af3d9d785708806480276f7586c89390a">emailToken</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an email token. <a href="#af3d9d785708806480276f7586c89390a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1Auth_1_1User.html#a9156dfab4821e49aa7e109f3f1a2674b">User::EmailTokenRole</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a7a918433f0ac66db865c786a38a0822f">emailTokenRole</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the role of the current email token. <a href="#a7a918433f0ac66db865c786a38a0822f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a58f314d03f6a7593e2ae084a86a5e542">findWithEmailToken</a> (const std::string &hash) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Finds a user with a given email token. <a href="#a58f314d03f6a7593e2ae084a86a5e542"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a4ee55ce44a6d4a6cacf1f40681d7fbbe">addAuthToken</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user, const <a class="el" href="classWt_1_1Auth_1_1Token.html">Token</a> &token)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Adds an authentication token to a user. <a href="#a4ee55ce44a6d4a6cacf1f40681d7fbbe"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a58700c257c1613772608c395668fb473">removeAuthToken</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user, const std::string &hash)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Deletes an authentication token. <a href="#a58700c257c1613772608c395668fb473"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a91ef2bdcd34ede0ab671dc578a3f735e">findWithAuthToken</a> (const std::string &hash) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Finds a user with an authentication token. <a href="#a91ef2bdcd34ede0ab671dc578a3f735e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a8b4c7df8f1bb4a751140f4e58c47de2c">setFailedLoginAttempts</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user, int count)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the number of consecutive authentication failures. <a href="#a8b4c7df8f1bb4a751140f4e58c47de2c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a82c913d5040e6d1c3bf4dc0f42e052f2">failedLoginAttempts</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of consecutive authentication failures. <a href="#a82c913d5040e6d1c3bf4dc0f42e052f2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a0eac750824c712427221df323f122b3c">setLastLoginAttempt</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user, const <a class="el" href="classWt_1_1WDateTime.html">WDateTime</a> &t)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the time of the last login attempt. <a href="#a0eac750824c712427221df323f122b3c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classWt_1_1WDateTime.html">WDateTime</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#af66c0b5f4075e8f2ee3e5b9ca932f5b7">lastLoginAttempt</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &user) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the time of the last login. <a href="#af66c0b5f4075e8f2ee3e5b9ca932f5b7"></a><br/></td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><h3>template<class DboType><br/> class Wt::Auth::Dbo::UserDatabase< DboType ></h3> <p>A default implementation for a authentication data in Wt::Dbo. </p> <p>This is a template class, and needs as parameter the <a class="el" href="namespaceWt_1_1Dbo.html" title="Namespace for the Database Objects (Wt::Dbo).">Dbo</a> type which models holds the authentication information. A suitable implementation, which stores authentication information outside the "user" class, is provided by <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1AuthInfo.html" title="A default implementation for authentication data in Wt::Dbo.">AuthInfo</a>.</p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html" title="A default implementation for a authentication data in Wt::Dbo.">UserDatabase</a> </dd></dl> </div><hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a4ee55ce44a6d4a6cacf1f40681d7fbbe"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::addAuthToken" ref="a4ee55ce44a6d4a6cacf1f40681d7fbbe" args="(const User &user, const Token &token)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual void <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::addAuthToken </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1Token.html">Token</a> & </td> <td class="paramname"><em>token</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Adds an authentication token to a user. </p> <p>Unless you want a user to only have remember-me support from a single computer at a time, you should support multiple authentication tokens per user. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#aa9e6675aad111e35b2725ced17208211">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a92990ca73bd79b9558394d96e5b53abf"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::addIdentity" ref="a92990ca73bd79b9558394d96e5b53abf" args="(const User &user, const std::string &provider, const WString &identity)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual void <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::addIdentity </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>provider</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classWt_1_1WString.html">WString</a> & </td> <td class="paramname"><em>id</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Sets an identifier for the user. </p> <p>This associates an identifier with the user.</p> <p>You are free to support only one identity per user, e.g. if you only use password-based authentication. But you may also want to support more than one if you allow the user to login using multiple methods (e.g. name/password, OAuth from one or more providers, LDAP, ...). </p> <p>Implements <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#ab97a74c1009a6c72e3f1b897246eb982">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a5b2ede866d7e93f17d8bd1183d255854"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::deleteUser" ref="a5b2ede866d7e93f17d8bd1183d255854" args="(const User &user)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual void <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::deleteUser </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Delete a user. </p> <p>This deletes a user from the database. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a5067e569748cfad8c3356735a33aa10f">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a5fba94f7ad74b08bde2d76e1782923e6"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::email" ref="a5fba94f7ad74b08bde2d76e1782923e6" args="(const User &user) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual std::string <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::email </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns a user's email address. </p> <p>This may be an unverified or verified email address, depending on whether email address verification is enabled in the model classes.</p> <p>This is an optional method, and currently not used by any of the included models or views. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a15fa807c21115be032626a4a4b661015">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="af3d9d785708806480276f7586c89390a"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::emailToken" ref="af3d9d785708806480276f7586c89390a" args="(const User &user) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1Auth_1_1Token.html">Token</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::emailToken </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns an email token. </p> <p>This is only used when email verification is enabled and for lost password functionality. It should return the email token previously set with <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a4dfd0cf66dce6b42f51063549c2402fd" title="Sets a new email token for a user.">setEmailToken()</a> </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#af97442ab53528b3609a9e102bf4ec149">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a7a918433f0ac66db865c786a38a0822f"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::emailTokenRole" ref="a7a918433f0ac66db865c786a38a0822f" args="(const User &user) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1Auth_1_1User.html#a9156dfab4821e49aa7e109f3f1a2674b">User::EmailTokenRole</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::emailTokenRole </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the role of the current email token. </p> <p>This is only used when email verification is enabled or for lost password functionality. It should return the role previously set with setEailToken(). </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#ad92251a0fe300577a4227f3ffbe01349">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a82c913d5040e6d1c3bf4dc0f42e052f2"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::failedLoginAttempts" ref="a82c913d5040e6d1c3bf4dc0f42e052f2" args="(const User &user) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual int <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::failedLoginAttempts </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the number of consecutive authentication failures. </p> <p><em><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a8b4c7df8f1bb4a751140f4e58c47de2c" title="Sets the number of consecutive authentication failures.">setFailedLoginAttempts()</a></em> </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#ae659dd936613346de1edad3bc91f700c">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a91ef2bdcd34ede0ab671dc578a3f735e"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::findWithAuthToken" ref="a91ef2bdcd34ede0ab671dc578a3f735e" args="(const std::string &hash) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::findWithAuthToken </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>hash</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Finds a user with an authentication token. </p> <p>Returns a user with an authentication token.</p> <p>This should find the user associated with a particular token hash, or return an invalid user if no user with that token hash exists. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#ac464256e227b6141d7ad5a7c2612d1fb">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a12419c6b03ae0308f4061277f7835613"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::findWithEmail" ref="a12419c6b03ae0308f4061277f7835613" args="(const std::string &address) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::findWithEmail </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>address</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Finds a user with a given email address. </p> <p>This is used to verify that a email addresses are unique, and to implement lost password functionality. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a29e3c7e2e82500882453d193d4c89f78">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a58f314d03f6a7593e2ae084a86a5e542"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::findWithEmailToken" ref="a58f314d03f6a7593e2ae084a86a5e542" args="(const std::string &hash) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::findWithEmailToken </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>hash</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Finds a user with a given email token. </p> <p>This is only used when email verification is enabled or for lost password functionality. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a5c1c2c63f45f6b9dc81e99020d0faaab">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a1399d167a43b3c63f1f7ebe79abeba4e"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::findWithId" ref="a1399d167a43b3c63f1f7ebe79abeba4e" args="(const std::string &id) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::findWithId </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>id</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Finds a user with a given id. </p> <p>The id uniquely identifies a user.</p> <p>This should find the user with the given <code>id</code>, or return an invalid user if no user with that id exists. </p> <p>Implements <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#afe820eed084f426a89cc7276d5db3e0f">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a424b0a6527e1316f9684e1956232c8ad"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::findWithIdentity" ref="a424b0a6527e1316f9684e1956232c8ad" args="(const std::string &provider, const WString &identity) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::findWithIdentity </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>provider</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classWt_1_1WString.html">WString</a> & </td> <td class="paramname"><em>identity</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Finds a user with a given identity. </p> <p>The <code>identity</code> uniquely identifies the user by the <code>provider</code>.</p> <p>This should find the user with the given <code>identity</code>, or return an invalid user if no user with that identity exists. </p> <p>Implements <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#ad86157a5d896af38825d9575fa8f8eae">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a58b5b1ea88ed322f54dabd923bbb53dd"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::identity" ref="a58b5b1ea88ed322f54dabd923bbb53dd" args="(const User &user, const std::string &provider) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1WString.html">WString</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::identity </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>provider</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns a user identity. </p> <p>Returns a user identity for the given provider, or an empty string if the user has no identitfy set for this provider.</p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a92990ca73bd79b9558394d96e5b53abf" title="Sets an identifier for the user.">addIdentity()</a> </dd></dl> <p>Implements <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a299a308436b353c2f91162244333c173">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="af66c0b5f4075e8f2ee3e5b9ca932f5b7"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::lastLoginAttempt" ref="af66c0b5f4075e8f2ee3e5b9ca932f5b7" args="(const User &user) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1WDateTime.html">WDateTime</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::lastLoginAttempt </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the time of the last login. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a0eac750824c712427221df323f122b3c" title="Sets the time of the last login attempt.">setLastLoginAttempt()</a> </dd></dl> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#ae49650f598ed0474c03f58b20cf05e07">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a577c4170630f85ab0b2424bd0d0271ef"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::password" ref="a577c4170630f85ab0b2424bd0d0271ef" args="(const User &user) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1Auth_1_1PasswordHash.html">PasswordHash</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::password </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns a user password. </p> <p>This returns the stored password for a user, or a default constructed password hash if the user does not yet have password credentials.</p> <p>This is used only by <a class="el" href="classWt_1_1Auth_1_1PasswordService.html" title="Password authentication service.">PasswordService</a>. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#abdea1a684e09897d33e2d6ed4ce27ff8">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a74f53d62b49a0be5b46456a2373d3ba7"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::registerNew" ref="a74f53d62b49a0be5b46456a2373d3ba7" args="()" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::registerNew </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Registers a new user. </p> <p>This adds a new user.</p> <p>This method is only used by view classes involved with registration (<a class="el" href="classWt_1_1Auth_1_1RegistrationWidget.html" title="A registration widget.">RegistrationWidget</a>). </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a14e8b7552a2fe578665970860c48fa27">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a58700c257c1613772608c395668fb473"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::removeAuthToken" ref="a58700c257c1613772608c395668fb473" args="(const User &user, const std::string &hash)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual void <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::removeAuthToken </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>hash</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Deletes an authentication token. </p> <p>Deletes an authentication token previously added with <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a4ee55ce44a6d4a6cacf1f40681d7fbbe" title="Adds an authentication token to a user.">addAuthToken()</a> </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#acfe2c37b3ecaf468cb9663a2cd83a980">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a07362974d7709189d7b9ae38cf726fb1"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::setEmail" ref="a07362974d7709189d7b9ae38cf726fb1" args="(const User &user, const std::string &address)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual bool <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::setEmail </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>address</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Sets a user's email address. </p> <p>This is used only when email verification is enabled, or as a result of a 3rd party <a class="el" href="classWt_1_1Auth_1_1Identity.html" title="A class that represents a user identity.">Identity</a> Provider based registration process, if the provider also provides email address information with the identiy.</p> <p>Returns whether the user's email address could be set. This may fail when there is already a user registered that email address.</p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html#a12419c6b03ae0308f4061277f7835613" title="Finds a user with a given email address.">findWithEmail()</a> </dd></dl> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a9f24e4a83a20e24dd8ac64558db51559">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a4dfd0cf66dce6b42f51063549c2402fd"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::setEmailToken" ref="a4dfd0cf66dce6b42f51063549c2402fd" args="(const User &user, const Token &token, User::EmailTokenRole role)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual void <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::setEmailToken </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1Token.html">Token</a> & </td> <td class="paramname"><em>token</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classWt_1_1Auth_1_1User.html#a9156dfab4821e49aa7e109f3f1a2674b">User::EmailTokenRole</a> </td> <td class="paramname"><em>role</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Sets a new email token for a user. </p> <p>This is only used when email verification is enabled or for lost password functionality. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a3f12058159d7e2ea45ebc2e72b568942">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a8b4c7df8f1bb4a751140f4e58c47de2c"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::setFailedLoginAttempts" ref="a8b4c7df8f1bb4a751140f4e58c47de2c" args="(const User &user, int count)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual void <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::setFailedLoginAttempts </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>count</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Sets the number of consecutive authentication failures. </p> <p>This sets the number of consecutive authentication failures since the last valid login.</p> <p>This is used by the throttling logic to determine how much time a user needs to wait before he can do a new login attempt. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a4e146059644458af7fa650f17416471a">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a0eac750824c712427221df323f122b3c"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::setLastLoginAttempt" ref="a0eac750824c712427221df323f122b3c" args="(const User &user, const WDateTime &t)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual void <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::setLastLoginAttempt </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classWt_1_1WDateTime.html">WDateTime</a> & </td> <td class="paramname"><em>t</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Sets the time of the last login attempt. </p> <p>This sets the time at which the user attempted to login. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a4f8b8b76e3202b9b86e40649958617e2">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a285ce48322c12e4e51e7fadbc3755574"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::setPassword" ref="a285ce48322c12e4e51e7fadbc3755574" args="(const User &user, const PasswordHash &password)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual void <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::setPassword </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1PasswordHash.html">PasswordHash</a> & </td> <td class="paramname"><em>password</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Sets a new user password. </p> <p>This updates the password for a user.</p> <p>This is used only by <a class="el" href="classWt_1_1Auth_1_1PasswordService.html" title="Password authentication service.">PasswordService</a>. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a489310f977a7c22c7b29ec89fba297cc">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a4dd5ba163f90e1e91ae3d4a5b372812c"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::setUnverifiedEmail" ref="a4dd5ba163f90e1e91ae3d4a5b372812c" args="(const User &user, const std::string &address)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual void <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::setUnverifiedEmail </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>address</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Sets a user's unverified email address. </p> <p>This is only used when email verification is enabled. It holds the currently unverified email address, while a mail is being sent for the user to confirm this email address. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#aa3709b846d8949b6a411c8494496aa55">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a45bb818735ce31769dad03ead2630ce4"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::startTransaction" ref="a45bb818735ce31769dad03ead2630ce4" args="()" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase_1_1Transaction.html">Transaction</a>* <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::startTransaction </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a new database transaction. </p> <p>If the underlying database does not support transactions, you can return <code>0</code>.</p> <p>Ownership of the transaction is transferred, and the transaction must be deleted after it has been committed or rolled back.</p> <p>The default implementation returns <code>0</code> (no transaction support). </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#afdc5c2f3dccb1a0208633949c067c3f2">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="a9a0ca45665d71eaa6cfceba977099b2d"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::status" ref="a9a0ca45665d71eaa6cfceba977099b2d" args="(const User &user) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classWt_1_1Auth_1_1User.html#ac8a61657a320eef6ae6e2c394bdd4437">User::Status</a> <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::status </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the status for a user. </p> <p>If there is support for suspending accounts, then this method may be implemented to return whether a user account is disabled.</p> <p>The default implementation always returns <a class="el" href="classWt_1_1Auth_1_1User.html#ac8a61657a320eef6ae6e2c394bdd4437a4bdc87727a5f54db977b9e192f05e689" title="Normal status.">User::Normal</a>.</p> <dl class="see"><dt><b>See also:</b></dt><dd>Login::loginState() </dd></dl> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a64fba754661708d4c25219e46c5fe1b6">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> <a class="anchor" id="ab9c9fed997b9ff17b00c5101eef95153"></a><!-- doxytag: member="Wt::Auth::Dbo::UserDatabase::unverifiedEmail" ref="ab9c9fed997b9ff17b00c5101eef95153" args="(const User &user) const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class DboType > </div> <table class="memname"> <tr> <td class="memname">virtual std::string <a class="el" href="classWt_1_1Auth_1_1Dbo_1_1UserDatabase.html">Wt::Auth::Dbo::UserDatabase</a>< DboType >::unverifiedEmail </td> <td>(</td> <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> & </td> <td class="paramname"><em>user</em></td><td>)</td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns a user's unverified email address. </p> <p>This is an optional method, and currently not used by any of the included models or views. </p> <p>Reimplemented from <a class="el" href="classWt_1_1Auth_1_1AbstractUserDatabase.html#a041239ea5a0ef0a0907c045abf29f687">Wt::Auth::AbstractUserDatabase</a>.</p> </div> </div> </div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <hr size="1"><address style="text-align: right; margin: 3px"><small> Generated on Thu Nov 1 2012 for <a href="http://www.webtoolkit.eu/wt">the C++ Web Toolkit (Wt)</a> by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" border="0" style="vertical-align: middle; display: inline-block; height: 2em"></a> 1.7.5.1</small></address> </body> </html>