aboutsummaryrefslogtreecommitdiff
path: root/zenserver/auth/authservice.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2022-01-25 18:36:41 +0100
committerPer Larsson <[email protected]>2022-01-25 18:36:41 +0100
commit060c3ed4b49c6341d1a917ec728d26bda7e41494 (patch)
tree054b147827833efd715a08f08f85d7d2e25c609c /zenserver/auth/authservice.cpp
parentFixed missing object in project oplog response. (diff)
downloadzen-060c3ed4b49c6341d1a917ec728d26bda7e41494.tar.xz
zen-060c3ed4b49c6341d1a917ec728d26bda7e41494.zip
Added auth manager with support for OIDC providers.
Diffstat (limited to 'zenserver/auth/authservice.cpp')
-rw-r--r--zenserver/auth/authservice.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/zenserver/auth/authservice.cpp b/zenserver/auth/authservice.cpp
index c6def15b4..8200b9c9b 100644
--- a/zenserver/auth/authservice.cpp
+++ b/zenserver/auth/authservice.cpp
@@ -1,18 +1,49 @@
// Copyright Epic Games, Inc. All Rights Reserved.
#include <auth/authservice.h>
+#include <auth/authmgr.h>
+
+#include <zencore/compactbinarybuilder.h>
#include <zencore/string.h>
+#include <json11.hpp>
+
namespace zen {
using namespace std::literals;
-HttpAuthService::HttpAuthService()
+HttpAuthService::HttpAuthService(AuthMgr& AuthMgr) : m_AuthMgr(AuthMgr)
{
m_Router.RegisterRoute(
"token",
[this](HttpRouterRequest& RouterRequest) {
HttpServerRequest& ServerRequest = RouterRequest.ServerRequest();
+
+ const HttpContentType ContentType = ServerRequest.RequestContentType();
+
+ if ((ContentType == HttpContentType::kUnknownContentType || ContentType == HttpContentType::kJSON) == false)
+ {
+ return ServerRequest.WriteResponse(HttpResponseCode::BadRequest);
+ }
+
+ const IoBuffer Body = ServerRequest.ReadPayload();
+
+ std::string JsonText(reinterpret_cast<const char*>(Body.GetData()), Body.GetSize());
+ std::string JsonError;
+ json11::Json TokenInfo = json11::Json::parse(JsonText, JsonError);
+
+ if (!JsonError.empty())
+ {
+ CbObjectWriter Response;
+ Response << "Result"sv << false;
+ Response << "Error"sv << JsonError;
+
+ return ServerRequest.WriteResponse(HttpResponseCode::BadRequest, Response.Save());
+ }
+
+ const std::string RefreshToken = TokenInfo["RefreshToken"].string_value();
+ const std::string AccessToken = TokenInfo["AccessToken"].string_value();
+
ServerRequest.WriteResponse(HttpResponseCode::OK);
},
HttpVerb::kPost);