diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2015-05-02 12:03:06 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2015-05-02 12:03:06 +0200 |
commit | 22fcc60f0f076f83422d71a2a06c52c62354eecf (patch) | |
tree | 3bb82a40d2cacda27215663a02cb902ba5e63d4d | |
parent | 84c42bcc329a10325c846c6f46d580750bc39853 (diff) | |
download | aCms-22fcc60f0f076f83422d71a2a06c52c62354eecf.tar.gz aCms-22fcc60f0f076f83422d71a2a06c52c62354eecf.tar.bz2 |
added an users api function (JSON), playing with possibilities
-rw-r--r-- | src/user.cpp | 23 | ||||
-rw-r--r-- | src/user.hpp | 35 |
2 files changed, 58 insertions, 0 deletions
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<User> 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 <cppcms/json.h> + 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<User> { + + static User get( value const &v ) + { + User u; + if( v.type( ) != is_object) { + throw bad_value_cast( ); + } + u.name = v.get<std::string>( "name" ); + u.email = v.get<std::string>( "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 |