#pragma once #include #include "../services/AuthService.h" using namespace drogon; class UserController : public HttpController { public: METHOD_LIST_BEGIN ADD_METHOD_TO(UserController::register_, "/api/auth/register", Post); ADD_METHOD_TO(UserController::login, "/api/auth/login", Post); ADD_METHOD_TO(UserController::logout, "/api/auth/logout", Post); ADD_METHOD_TO(UserController::pgpChallenge, "/api/auth/pgp-challenge", Post); ADD_METHOD_TO(UserController::pgpVerify, "/api/auth/pgp-verify", Post); ADD_METHOD_TO(UserController::getCurrentUser, "/api/user/me", Get); ADD_METHOD_TO(UserController::updateProfile, "/api/user/profile", Put); ADD_METHOD_TO(UserController::updatePassword, "/api/user/password", Put); ADD_METHOD_TO(UserController::togglePgpOnly, "/api/user/pgp-only", Put); ADD_METHOD_TO(UserController::addPgpKey, "/api/user/pgp-key", Post); ADD_METHOD_TO(UserController::getPgpKeys, "/api/user/pgp-keys", Get); ADD_METHOD_TO(UserController::uploadAvatar, "/api/user/avatar", Post); ADD_METHOD_TO(UserController::getProfile, "/api/users/{1}", Get); ADD_METHOD_TO(UserController::getUserPgpKeys, "/api/users/{1}/pgp-keys", Get); ADD_METHOD_TO(UserController::updateColor, "/api/user/color", Put); ADD_METHOD_TO(UserController::getAvailableColors, "/api/colors/available", Get); METHOD_LIST_END void register_(const HttpRequestPtr &req, std::function &&callback); void login(const HttpRequestPtr &req, std::function &&callback); void logout(const HttpRequestPtr &req, std::function &&callback); void pgpChallenge(const HttpRequestPtr &req, std::function &&callback); void pgpVerify(const HttpRequestPtr &req, std::function &&callback); void getCurrentUser(const HttpRequestPtr &req, std::function &&callback); void updateProfile(const HttpRequestPtr &req, std::function &&callback); void updatePassword(const HttpRequestPtr &req, std::function &&callback); void togglePgpOnly(const HttpRequestPtr &req, std::function &&callback); void addPgpKey(const HttpRequestPtr &req, std::function &&callback); void getPgpKeys(const HttpRequestPtr &req, std::function &&callback); void uploadAvatar(const HttpRequestPtr &req, std::function &&callback); void getProfile(const HttpRequestPtr &req, std::function &&callback, const std::string &username); void getUserPgpKeys(const HttpRequestPtr &req, std::function &&callback, const std::string &username); void updateColor(const HttpRequestPtr &req, std::function &&callback); void getAvailableColors(const HttpRequestPtr &req, std::function &&callback); private: UserInfo getUserFromRequest(const HttpRequestPtr &req); };