diff options
Diffstat (limited to 'src/user.cpp')
-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; } |