summaryrefslogtreecommitdiff
path: root/src/user.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/user.cpp')
-rw-r--r--src/user.cpp44
1 files changed, 39 insertions, 5 deletions
diff --git a/src/user.cpp b/src/user.cpp
index 4fd2499..dddde30 100644
--- a/src/user.cpp
+++ b/src/user.cpp
@@ -76,7 +76,7 @@ void user::confirm_register( )
if( request( ).request_method( ) == "POST" ) {
c.confirm_register.load( context( ) );
if( c.confirm_register.validate( ) ) {
- response( ).set_redirect_header( cms.root( ) + "/intro" );
+ response( ).set_redirect_header( cms.root( ) + "/login" );
}
}
render( "confirm_register", c );
@@ -116,6 +116,22 @@ bool user::check_login( std::string user, std::string password )
return true;
}
+bool user::user_exists( std::string user )
+{
+ if( user.empty( ) ) {
+ return false;
+ }
+
+ cppdb::session sql( cms.conn );
+ cppdb::result r;
+ r = sql << "SELECT username FROM user WHERE username=?" << user << cppdb::row;
+ if( r.empty( ) ) {
+ return false;
+ }
+
+ return true;
+}
+
void user::ini( content::user &c )
{
master::ini( c );
@@ -181,7 +197,7 @@ register_user_form::register_user_form( apps::strusCms &cms )
cms( cms )
{
username.message( "Your login" );
- username.error_message( "The login is illegal" );
+ username.error_message( "Your login is illegal" );
password.message( "Your password" );
password.error_message( "Your password is illegal" );
password2.message( "Your password (again)" );
@@ -208,12 +224,28 @@ bool register_user_form::validate( )
return false;
}
+ if( cms.user.user_exists( username.value( ) ) ) {
+ username.valid( false );
+ password.valid( false );
+ username.error_message( "Username is taken" );
+ booster::ptime::sleep( booster::ptime( 5, 0 ) );
+ return false;
+ }
+
+ if( password.value( ).compare( password2.value( ) ) != 0 ) {
+ password.valid( false );
+ password2.valid( false );
+ password2.error_message( "Passwords didn't match" );
+ booster::ptime::sleep( booster::ptime( 5, 0 ) );
+ return false;
+ }
+
if( captcha.value( ).compare( cms.user.last_captcha ) != 0 ) {
captcha.valid( false );
captcha.clear( );
return false;
}
-
+
return true;
}
@@ -223,9 +255,8 @@ confirm_register_form::confirm_register_form( apps::strusCms &cms )
: cppcms::form( ),
cms( cms )
{
- code.message( "Enter the code you received by email" );
code.error_message( "The code you provided is not correct" );
- submit.value( "Log in" );
+ submit.value( "Verify" );
add( code );
add( submit );
@@ -239,6 +270,9 @@ bool confirm_register_form::validate( )
return false;
}
+ // TODO: check code supplied against code in the DB, this is a
+ // method in the user class
+
//~ if( !cms.user.check_code( code.value( ) ) ) {
//~ code.valid( false );
//~ booster::ptime::sleep( booster::ptime( 5, 0 ) );