diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2015-04-22 14:46:55 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2015-04-22 14:46:55 +0200 |
commit | 48b476289940862a9754f67752f0a092b0a1f0d2 (patch) | |
tree | 38b78883e43ae89a7a40dd915c505b6a2f654324 | |
parent | dec1359e90e847c90629e43ef3744539e8fb41c8 (diff) | |
download | aCms-48b476289940862a9754f67752f0a092b0a1f0d2.tar.gz aCms-48b476289940862a9754f67752f0a092b0a1f0d2.tar.bz2 |
working login with captcha
-rw-r--r-- | src/user.cpp | 12 | ||||
-rw-r--r-- | src/user.hpp | 4 | ||||
-rw-r--r-- | src/user_content.hpp | 1 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/user.cpp b/src/user.cpp index d94cd6f..65ca2d4 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -98,7 +98,8 @@ void user::ini( content::user &c ) unsigned char *gif = new unsigned char[gifsize]; captcha( im, l ); - c.captcha_text = std::string( (char *)l ); + last_captcha = new_captcha; + new_captcha = std::string( (char *)l ); std::ostringstream raws( std::stringstream::out | std::stringstream::binary ); makegif( im, gif ); @@ -148,12 +149,21 @@ login_form::login_form( apps::strusCms &cms ) bool login_form::validate( ) { if( !form::validate( ) ) { + booster::ptime::sleep( booster::ptime( 5, 0 ) ); return false; } if( !cms.user.check_login( username.value( ), password.value( ) ) ) { username.valid( false ); password.valid( false ); + password.clear( ); + booster::ptime::sleep( booster::ptime( 5, 0 ) ); + return false; + } + + if( captcha.value( ).compare( cms.user.last_captcha ) != 0 ) { + captcha.valid( false ); + captcha.clear( ); booster::ptime::sleep( booster::ptime( 5, 0 ) ); return false; } diff --git a/src/user.hpp b/src/user.hpp index f255fbf..d76392c 100644 --- a/src/user.hpp +++ b/src/user.hpp @@ -12,6 +12,10 @@ class user : public master { user( strusCms &cms ); bool check_login( std::string user, std::string password ); + public: + std::string last_captcha; + std::string new_captcha; + private: void login( ); void logout( ); diff --git a/src/user_content.hpp b/src/user_content.hpp index 857a15c..c0ff7eb 100644 --- a/src/user_content.hpp +++ b/src/user_content.hpp @@ -22,7 +22,6 @@ struct login_form : public cppcms::form { struct user : public master { login_form login; - std::string captcha_text; std::string captcha_base64; public: |