diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2015-04-19 16:57:37 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2015-04-19 16:57:37 +0200 |
commit | 0002c57163f2518bc949eb2b06c91422a63789e4 (patch) | |
tree | 2a3c170916be66c6e926f51f9f2d9e86ae8c47c8 /src | |
parent | 70e8b81c75486475983a5efe3c129c98bf88cefd (diff) | |
download | aCms-0002c57163f2518bc949eb2b06c91422a63789e4.tar.gz aCms-0002c57163f2518bc949eb2b06c91422a63789e4.tar.bz2 |
remember logins and table for login form
Diffstat (limited to 'src')
-rw-r--r-- | src/user.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/user.cpp b/src/user.cpp index 07312f9..649c40e 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -6,6 +6,7 @@ #include <cppcms/url_mapper.h> #include <cppdb/frontend.h> #include <cppcms/session_interface.h> +#include <booster/posix_time.h> namespace apps { @@ -55,11 +56,13 @@ bool user::check_login( std::string user, std::string password ) cppdb::session sql( cms.conn ); cppdb::result r; - r = sql << "SELECT password FROM users WHERE username=?" << user << cppdb::row; + r = sql << "SELECT id, password FROM user WHERE username=?" << user << cppdb::row; if( r.empty( ) ) { return false; } + int id; + r >> id; std::string pass; r >> pass; @@ -67,6 +70,14 @@ bool user::check_login( std::string user, std::string password ) return false; } + std::time_t now_time = std::time( 0 ); + std::tm now = *std::localtime( &now_time ); + + cppdb::statement stmt; + stmt = sql << "INSERT INTO login(user_id, last_login) VALUES(?, ?)" + << id << now; + stmt.exec( ); + return true; } @@ -101,6 +112,7 @@ bool login_form::validate( ) if( !cms.user.check_login( username.value( ), password.value( ) ) ) { username.valid( false ); password.valid( false ); + booster::ptime::sleep( booster::ptime( 5, 0 ) ); return false; } |