mirror of
https://github.com/Telecominfraproject/wlan-cloud-ucentralsec.git
synced 2025-11-02 03:37:51 +00:00
New router and simplifiedrest handler
This commit is contained in:
@@ -8,55 +8,57 @@
|
||||
|
||||
#include "Poco/JSON/Parser.h"
|
||||
|
||||
#include "AuthService.h"
|
||||
#include "RESTAPI_oauth2Handler.h"
|
||||
#include "RESTAPI_protocol.h"
|
||||
#include "AuthService.h"
|
||||
|
||||
namespace uCentral {
|
||||
void RESTAPI_oauth2Handler::handleRequest(Poco::Net::HTTPServerRequest &Request,
|
||||
Poco::Net::HTTPServerResponse &Response) {
|
||||
if (!ContinueProcessing(Request, Response))
|
||||
return;
|
||||
void RESTAPI_oauth2Handler::handleRequest(Poco::Net::HTTPServerRequest &Request,
|
||||
Poco::Net::HTTPServerResponse &Response) {
|
||||
|
||||
try {
|
||||
if (Request.getMethod() == Poco::Net::HTTPServerRequest::HTTP_POST) {
|
||||
if (!ContinueProcessing(Request, Response))
|
||||
return;
|
||||
|
||||
// Extract the info for login...
|
||||
Poco::JSON::Parser parser;
|
||||
Poco::JSON::Object::Ptr Obj = parser.parse(Request.stream()).extract<Poco::JSON::Object::Ptr>();
|
||||
try {
|
||||
if (Request.getMethod() == Poco::Net::HTTPServerRequest::HTTP_POST) {
|
||||
|
||||
auto userId = GetS(uCentral::RESTAPI::Protocol::USERID, Obj);
|
||||
auto password = GetS(uCentral::RESTAPI::Protocol::PASSWORD, Obj);
|
||||
// Extract the info for login...
|
||||
Poco::JSON::Parser parser;
|
||||
Poco::JSON::Object::Ptr Obj =
|
||||
parser.parse(Request.stream()).extract<Poco::JSON::Object::Ptr>();
|
||||
|
||||
Poco::toLowerInPlace(userId);
|
||||
uCentral::Objects::WebToken Token;
|
||||
auto userId = GetS(uCentral::RESTAPI::Protocol::USERID, Obj);
|
||||
auto password = GetS(uCentral::RESTAPI::Protocol::PASSWORD, Obj);
|
||||
|
||||
if (AuthService()->Authorize(userId, password, Token)) {
|
||||
Poco::JSON::Object ReturnObj;
|
||||
Token.to_json(ReturnObj);
|
||||
ReturnObject(Request, ReturnObj, Response);
|
||||
} else {
|
||||
UnAuthorized(Request, Response);
|
||||
}
|
||||
} else if (Request.getMethod() == Poco::Net::HTTPServerRequest::HTTP_DELETE) {
|
||||
if (!IsAuthorized(Request, Response)) {
|
||||
return;
|
||||
}
|
||||
auto Token = GetBinding(uCentral::RESTAPI::Protocol::TOKEN, "...");
|
||||
if (Token == SessionToken_) {
|
||||
AuthService()->Logout(Token);
|
||||
ReturnStatus(Request, Response, Poco::Net::HTTPResponse::HTTP_NO_CONTENT, true);
|
||||
} else {
|
||||
NotFound(Request, Response);
|
||||
}
|
||||
} else {
|
||||
BadRequest(Request, Response);
|
||||
}
|
||||
return;
|
||||
}
|
||||
catch (const Poco::Exception &E) {
|
||||
Logger_.warning(Poco::format("%s: Failed with: %s", std::string(__func__), E.displayText()));
|
||||
}
|
||||
BadRequest(Request, Response);
|
||||
}
|
||||
Poco::toLowerInPlace(userId);
|
||||
uCentral::Objects::WebToken Token;
|
||||
|
||||
if (AuthService()->Authorize(userId, password, Token)) {
|
||||
Poco::JSON::Object ReturnObj;
|
||||
Token.to_json(ReturnObj);
|
||||
ReturnObject(Request, ReturnObj, Response);
|
||||
} else {
|
||||
UnAuthorized(Request, Response);
|
||||
}
|
||||
} else if (Request.getMethod() == Poco::Net::HTTPServerRequest::HTTP_DELETE) {
|
||||
if (!IsAuthorized(Request, Response)) {
|
||||
return;
|
||||
}
|
||||
auto Token = GetBinding(uCentral::RESTAPI::Protocol::TOKEN, "...");
|
||||
if (Token == SessionToken_) {
|
||||
AuthService()->Logout(Token);
|
||||
ReturnStatus(Request, Response, Poco::Net::HTTPResponse::HTTP_NO_CONTENT, true);
|
||||
} else {
|
||||
NotFound(Request, Response);
|
||||
}
|
||||
} else {
|
||||
BadRequest(Request, Response);
|
||||
}
|
||||
return;
|
||||
} catch (const Poco::Exception &E) {
|
||||
Logger_.warning(
|
||||
Poco::format("%s: Failed with: %s", std::string(__func__), E.displayText()));
|
||||
}
|
||||
BadRequest(Request, Response);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user