diff options
Diffstat (limited to 'src/user.cpp')
-rw-r--r-- | src/user.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/user.cpp b/src/user.cpp index 36ad821..c77381d 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -5,6 +5,7 @@ #include <cppcms/url_dispatcher.h> #include <cppcms/url_mapper.h> #include <cppdb/frontend.h> +#include <cppcms/session_interface.h> namespace apps { @@ -13,21 +14,34 @@ user::user( strusCms &cms ) { cms.dispatcher( ).assign( "/login", &user::login, this ); cms.mapper( ).assign( "login" ); + + cms.dispatcher( ).assign( "/logout", &user::logout, this ); + cms.mapper( ).assign( "logout" ); } void user::login( ) { content::user c( cms ); - c.title = "strusCms"; + ini( c ); if( request( ).request_method( ) == "POST" ) { c.login.load( context( ) ); if( c.login.validate( ) ) { response( ).set_redirect_header( cms.root( ) ); + session( )["username"] = c.login.username.value( ); + session( ).expose( "username" ); } } render( "login", c ); } +void user::logout( ) +{ + content::user c( cms ); + session( ).clear( ); + ini( c ); + render( "logout", c ); +} + // TODO: make this a salted hash bool user::check_login( std::string user, std::string password ) { |