summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2015-04-19 16:57:37 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2015-04-19 16:57:37 +0200
commit0002c57163f2518bc949eb2b06c91422a63789e4 (patch)
tree2a3c170916be66c6e926f51f9f2d9e86ae8c47c8 /src
parent70e8b81c75486475983a5efe3c129c98bf88cefd (diff)
downloadaCms-0002c57163f2518bc949eb2b06c91422a63789e4.tar.gz
aCms-0002c57163f2518bc949eb2b06c91422a63789e4.tar.bz2
remember logins and table for login form
Diffstat (limited to 'src')
-rw-r--r--src/user.cpp14
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;
}