summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2015-05-02 12:03:06 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2015-05-02 12:03:06 +0200
commit22fcc60f0f076f83422d71a2a06c52c62354eecf (patch)
tree3bb82a40d2cacda27215663a02cb902ba5e63d4d
parent84c42bcc329a10325c846c6f46d580750bc39853 (diff)
downloadaCms-22fcc60f0f076f83422d71a2a06c52c62354eecf.tar.gz
aCms-22fcc60f0f076f83422d71a2a06c52c62354eecf.tar.bz2
added an users api function (JSON), playing with possibilities
-rw-r--r--src/user.cpp23
-rw-r--r--src/user.hpp35
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