summaryrefslogtreecommitdiff
path: root/src/user.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/user.cpp')
-rw-r--r--src/user.cpp113
1 files changed, 106 insertions, 7 deletions
diff --git a/src/user.cpp b/src/user.cpp
index ebc3b06..4fd2499 100644
--- a/src/user.cpp
+++ b/src/user.cpp
@@ -11,6 +11,8 @@
namespace apps {
+// user
+
user::user( strusCms &cms )
: master( cms )
{
@@ -19,6 +21,12 @@ user::user( strusCms &cms )
cms.dispatcher( ).assign( "/logout", &user::logout, this );
cms.mapper( ).assign( "logout" );
+
+ cms.dispatcher( ).assign( "/register", &user::register_user, this );
+ cms.mapper( ).assign( "register" );
+
+ cms.dispatcher( ).assign( "/confirm_register", &user::confirm_register, this );
+ cms.mapper( ).assign( "confirm_register" );
}
void user::login( )
@@ -48,6 +56,32 @@ void user::logout( )
render( "logout", c );
}
+void user::register_user( )
+{
+ content::user c( cms );
+ ini( c );
+ if( request( ).request_method( ) == "POST" ) {
+ c.register_user.load( context( ) );
+ if( c.register_user.validate( ) ) {
+ response( ).set_redirect_header( cms.root( ) + "/confirm_register" );
+ }
+ }
+ render( "register_user", c );
+}
+
+void user::confirm_register( )
+{
+ content::user c( cms );
+ ini( c );
+ if( request( ).request_method( ) == "POST" ) {
+ c.confirm_register.load( context( ) );
+ if( c.confirm_register.validate( ) ) {
+ response( ).set_redirect_header( cms.root( ) + "/intro" );
+ }
+ }
+ render( "confirm_register", c );
+}
+
// TODO: make this a salted hash
bool user::check_login( std::string user, std::string password )
{
@@ -96,7 +130,14 @@ void user::ini( content::user &c )
} // namespace apps
namespace content {
+
+user::user( apps::strusCms &cms )
+ : login( cms ), register_user( cms ), confirm_register( cms )
+{
+}
+// login
+
login_form::login_form( apps::strusCms &cms )
: cppcms::form( ),
cms( cms )
@@ -105,18 +146,14 @@ login_form::login_form( apps::strusCms &cms )
username.error_message( "The login is illegal" );
password.message( "Your password" );
password.error_message( "Your password is illegal" );
- captcha.message( "Enter the correct captcha" );
- captcha.error_message( "Captcha didn't match" );
submit.value( "Log in" );
add( username );
add( password );
- add( captcha );
add( submit );
username.non_empty( );
password.non_empty( );
- captcha.non_empty( );
}
bool login_form::validate( )
@@ -133,20 +170,82 @@ bool login_form::validate( )
booster::ptime::sleep( booster::ptime( 5, 0 ) );
return false;
}
+
+ return true;
+}
+
+// register user
+
+register_user_form::register_user_form( apps::strusCms &cms )
+ : cppcms::form( ),
+ cms( cms )
+{
+ username.message( "Your login" );
+ username.error_message( "The login is illegal" );
+ password.message( "Your password" );
+ password.error_message( "Your password is illegal" );
+ password2.message( "Your password (again)" );
+ password2.error_message( "Your password doesn't match" );
+ captcha.message( "Enter the correct captcha" );
+ captcha.error_message( "Captcha didn't match" );
+ submit.value( "Register user" );
+
+ add( username );
+ add( password );
+ add( password2 );
+ add( captcha );
+ add( submit );
+
+ username.non_empty( );
+ password.non_empty( );
+ password2.non_empty( );
+ captcha.non_empty( );
+}
+
+bool register_user_form::validate( )
+{
+ if( !form::validate( ) ) {
+ 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;
}
return true;
}
+
+// confirm user registration form
+
+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" );
-user::user( apps::strusCms &cms )
- : login( cms )
+ add( code );
+ add( submit );
+
+ code.non_empty( );
+}
+
+bool confirm_register_form::validate( )
{
+ if( !form::validate( ) ) {
+ return false;
+ }
+
+ //~ if( !cms.user.check_code( code.value( ) ) ) {
+ //~ code.valid( false );
+ //~ booster::ptime::sleep( booster::ptime( 5, 0 ) );
+ //~ return false;
+ //~ }
+
+ return true;
}
} // namespace content