From 060c3ed4b49c6341d1a917ec728d26bda7e41494 Mon Sep 17 00:00:00 2001 From: Per Larsson Date: Tue, 25 Jan 2022 18:36:41 +0100 Subject: Added auth manager with support for OIDC providers. --- zenserver/auth/authservice.cpp | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'zenserver/auth/authservice.cpp') 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 +#include + +#include #include +#include + 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(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); -- cgit v1.2.3