From 22fcc60f0f076f83422d71a2a06c52c62354eecf Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 2 May 2015 12:03:06 +0200 Subject: added an users api function (JSON), playing with possibilities --- src/user.cpp | 23 +++++++++++++++++++++++ src/user.hpp | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/src/user.cpp b/src/user.cpp index 8156ff0..6180c9d 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -35,6 +35,9 @@ user::user( strusCms &cms ) cms.dispatcher( ).assign( "/confirm_register", &user::confirm_register, this ); cms.mapper( ).assign( "confirm_register" ); + + cms.dispatcher( ).assign( "/api/users", &user::api_users, this ); + cms.mapper( ).assign( "api_users" ); } void user::login( ) @@ -115,6 +118,26 @@ void user::confirm_register( ) render( "confirm_register", c ); } + +void user::api_users( ) +{ + cppdb::session sql( cms.conn ); + cppdb::result r; + r = sql << "SELECT username, email FROM user"; + std::vector users; + while( r.next( ) ) { + User user; + r >> user.name; + r >> user.email; + users.push_back( user ); + } + + cppcms::json::value j; + + j = users; + + response( ).out( ) << j; +} // TODO: make this a salted hash bool user::check_login( const std::string user, const std::string password ) diff --git a/src/user.hpp b/src/user.hpp index e6a4e35..62b3f0a 100644 --- a/src/user.hpp +++ b/src/user.hpp @@ -5,6 +5,8 @@ #include "user_content.hpp" +#include + namespace apps { class user : public master { @@ -25,9 +27,42 @@ class user : public master { void logout( ); void register_user( ); void confirm_register( ); + void api_users( ); void ini( content::user &c ); }; } +struct User { + std::string name; + std::string email; +}; + +namespace cppcms { + namespace json { + +template<> +struct traits { + + static User get( value const &v ) + { + User u; + if( v.type( ) != is_object) { + throw bad_value_cast( ); + } + u.name = v.get( "name" ); + u.email = v.get( "email" ); + return u; + } + + static void set( value &v, User const &u ) + { + v.set( "name", u.name ); + v.set( "email", u.email ); + } + +}; + +} } // namespace cppcms::json + #endif -- cgit v1.2.3-54-g00ecf