Cavoke  1.1.0
A Platform for creating and hosting multiplayer turn-based board games
Loading...
Searching...
No Matches
users_controller.cpp
1#include "users_controller.h"
2#include "filters/AuthFilter.h"
3#include "model/sessions/game_session.h"
4
5namespace cavoke::server::controllers {
6void UsersController::get_me(
7 const drogon::HttpRequestPtr &req,
8 std::function<void(const drogon::HttpResponsePtr &)> &&callback) {
9 auto user_id = AuthFilter::get_user_id(req);
10 auto user = mp_users.findByPrimaryKey(user_id);
11 auto resp = newNlohmannJsonResponse(
12 cavoke::server::model::GameSessionAccessObject::UserInfo::from_user(
13 user));
14 return callback(resp);
15}
16void UsersController::change_name(
17 const drogon::HttpRequestPtr &req,
18 std::function<void(const drogon::HttpResponsePtr &)> &&callback) {
19 auto user_id = AuthFilter::get_user_id(req);
20
21 auto new_name = req->getOptionalParameter<std::string>("new_name");
22 if (!new_name.has_value()) {
23 return CALLBACK_STATUS_CODE(k400BadRequest);
24 }
25
26 mp_users.updateBy(
27 {drogon_model::cavoke_orm::Users::Cols::_display_name},
28 drogon::orm::Criteria(drogon_model::cavoke_orm::Users::Cols::_id,
29 drogon::orm::CompareOperator::EQ, user_id),
30 new_name.value());
31 auto user = mp_users.findByPrimaryKey(user_id);
32 auto resp = newNlohmannJsonResponse(
33 cavoke::server::model::GameSessionAccessObject::UserInfo::from_user(
34 user));
35 return callback(resp);
36}
37void UsersController::get_user(
38 const drogon::HttpRequestPtr &req,
39 std::function<void(const drogon::HttpResponsePtr &)> &&callback) {
40 auto req_user_id = req->getOptionalParameter<std::string>("req_user_id");
41 if (!req_user_id.has_value()) {
42 return CALLBACK_STATUS_CODE(k400BadRequest);
43 }
44
45 try {
46 auto user = mp_users.findByPrimaryKey(req_user_id.value());
47 auto resp = newNlohmannJsonResponse(
48 cavoke::server::model::GameSessionAccessObject::UserInfo::from_user(
49 user));
50 return callback(resp);
51 } catch (const drogon::orm::UnexpectedRows &) {
52 return CALLBACK_STATUS_CODE(k404NotFound);
53 }
54}
55} // namespace cavoke::server::controllers
static std::string get_user_id(const HttpRequestPtr &)
Acquires user_id parsed during AuthFilter's execution.
Definition: AuthFilter.cc:82