From ab5389857c4650f88ef4ce7ea64b8edb98054023 Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Mon, 27 May 2024 13:16:51 +0700 Subject: [PATCH] added corsheaders --- CMakeLists.txt | 2 ++ src/auth/auth.cpp | 1 + src/auth_service.cpp | 6 ++++++ src/security/cors.cpp | 8 ++++++++ src/security/cors.hpp | 13 +++++++++++++ src/users/access_request.cpp | 1 + src/users/add_user.cpp | 1 + src/users/change_password.cpp | 1 + src/users/change_user.cpp | 1 + src/users/delete_user.cpp | 1 + src/users/get_all_users.cpp | 1 + src/users/get_user.cpp | 1 + 12 files changed, 37 insertions(+) create mode 100644 src/security/cors.cpp create mode 100644 src/security/cors.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a7d8f7..bb5b241 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,5 +20,7 @@ add_executable( src/users/get_all_users.cpp src/users/get_user.cpp src/users/change_user.cpp + + src/security/cors.cpp ) target_link_libraries(auth_service jwt-cpp::jwt-cpp) diff --git a/src/auth/auth.cpp b/src/auth/auth.cpp index 3911486..b2cf523 100644 --- a/src/auth/auth.cpp +++ b/src/auth/auth.cpp @@ -2,6 +2,7 @@ // function for authorization users void auth(const httplib::Request& request, httplib::Response& response) { + response.set_header("Access-Control-Allow-Origin", "*"); if (request.body == "") {response.set_content("{\"required\":\"[username,password]\"}", "application/json");return;} nlohmann::json json_body = nlohmann::json::parse(request.body); diff --git a/src/auth_service.cpp b/src/auth_service.cpp index 3ce9ec4..f1a20f5 100644 --- a/src/auth_service.cpp +++ b/src/auth_service.cpp @@ -7,6 +7,10 @@ #include "auth/auth.hpp" #include "users/users.hpp" +#define CORS_ENABLE + +#include "security/cors.hpp" + int main() { httplib::Server srv; @@ -19,6 +23,8 @@ int main() { srv.Post("/api/access", user_access); srv.Post("/api/users/user/change", change_user); + srv.Options("/api/token", set_cors_headers); + srv.set_mount_point("/admin", "../src/web"); srv.set_mount_point("/js", "../src/web/js"); srv.set_mount_point("/css", "../src/web/css"); diff --git a/src/security/cors.cpp b/src/security/cors.cpp new file mode 100644 index 0000000..b935070 --- /dev/null +++ b/src/security/cors.cpp @@ -0,0 +1,8 @@ +#include "cors.hpp" + +void set_cors_headers(const httplib::Request& request, httplib::Response& response) { + response.set_header("Access-Control-Allow-Origin", "*"); + response.set_header("Access-Control-Allow-Methods", "GET,POST,OPTIONS"); + response.set_header("Access-Control-Allow-Headers", "Authorization,X-Custom,Content-Type"); +} + diff --git a/src/security/cors.hpp b/src/security/cors.hpp new file mode 100644 index 0000000..da579f3 --- /dev/null +++ b/src/security/cors.hpp @@ -0,0 +1,13 @@ +#ifndef CORS_HPP +#define CCORS_HPP + +#include + +#ifdef CORS_ENABLE + +void set_cors_headers(const httplib::Request& request, httplib::Response& response); + +#endif // CORS_ENABLE + +#endif // CORS_HPP + diff --git a/src/users/access_request.cpp b/src/users/access_request.cpp index 29a0b90..5261c66 100644 --- a/src/users/access_request.cpp +++ b/src/users/access_request.cpp @@ -2,6 +2,7 @@ // function for access or reject authorization void user_access(const httplib::Request& request, httplib::Response& response) { + response.set_header("Access-Control-Allow-Origin", "*"); if (request.body == "") {response.set_content("{\"required\":\"[token]\"}", "application/json");return;} nlohmann::json json_body = nlohmann::json::parse(request.body); diff --git a/src/users/add_user.cpp b/src/users/add_user.cpp index 0cb3b62..aecf36c 100644 --- a/src/users/add_user.cpp +++ b/src/users/add_user.cpp @@ -14,6 +14,7 @@ std::string get_random_string(const char *alphabet, int quantity) { // function for add user void add_user(const httplib::Request& request, httplib::Response& response) { + response.set_header("Access-Control-Allow-Origin", "*"); if (request.body == "") {response.set_content("{\"required\":\"[token,username,password]\",\"optional\":\"[group,is_superuser]\"}", "application/json");return;} nlohmann::json json_body = nlohmann::json::parse(request.body); diff --git a/src/users/change_password.cpp b/src/users/change_password.cpp index 0732ea1..1b8ddb8 100644 --- a/src/users/change_password.cpp +++ b/src/users/change_password.cpp @@ -2,6 +2,7 @@ // functtion for change password for user void change_password(const httplib::Request& request, httplib::Response& response) { + response.set_header("Access-Control-Allow-Origin", "*"); if (request.body == "") {response.set_content( "{\"required\":\"[token,old_password,new_password] or if you superuser [token,userid,new_password]\"}", "application/json" diff --git a/src/users/change_user.cpp b/src/users/change_user.cpp index 0028307..c0ee6f3 100644 --- a/src/users/change_user.cpp +++ b/src/users/change_user.cpp @@ -1,6 +1,7 @@ #include "users.hpp" void change_user(const httplib::Request& request, httplib::Response& response) { + response.set_header("Access-Control-Allow-Origin", "*"); if (request.body == "") {response.set_content( "{\"required\":\"[token] or if you superuser [token,userid]\",\"optional\":\"[username,password,is_superuser,group]\"}", "application/json" diff --git a/src/users/delete_user.cpp b/src/users/delete_user.cpp index bb62514..f7ab759 100644 --- a/src/users/delete_user.cpp +++ b/src/users/delete_user.cpp @@ -2,6 +2,7 @@ // function for delete user void delete_user(const httplib::Request& request, httplib::Response& response) { + response.set_header("Access-Control-Allow-Origin", "*"); if (request.body == "") {response.set_content("{\"required\":\"[token] or if you superuser [token,userid]\"}", "application/json");return;} nlohmann::json json_body = nlohmann::json::parse(request.body); diff --git a/src/users/get_all_users.cpp b/src/users/get_all_users.cpp index e9f462c..0d2474f 100644 --- a/src/users/get_all_users.cpp +++ b/src/users/get_all_users.cpp @@ -2,6 +2,7 @@ // function for get all users data without password void get_all_users(const httplib::Request& request, httplib::Response& response) { + response.set_header("Access-Control-Allow-Origin", "*"); if (request.body == "") {response.set_content("{\"required\":\"[token]\"}", "application/json");return;} nlohmann::json json_body = nlohmann::json::parse(request.body); diff --git a/src/users/get_user.cpp b/src/users/get_user.cpp index e2ced64..2b41f65 100644 --- a/src/users/get_user.cpp +++ b/src/users/get_user.cpp @@ -2,6 +2,7 @@ // function for get user data without password void get_user(const httplib::Request& request, httplib::Response& response) { + response.set_header("Access-Control-Allow-Origin", "*"); if (request.body == "") {response.set_content("{\"required\":\"[token]\"}", "application/json");return;} nlohmann::json json_body = nlohmann::json::parse(request.body);