mirror of
https://github.com/Telecominfraproject/wlan-cloud-ucentralsec.git
synced 2025-11-01 19:27:59 +00:00
741 lines
23 KiB
C++
741 lines
23 KiB
C++
//
|
|
// License type: BSD 3-Clause License
|
|
// License copy: https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/blob/master/LICENSE
|
|
//
|
|
// Created by Stephane Bourque on 2021-03-04.
|
|
// Arilia Wireless Inc.
|
|
//
|
|
|
|
#include "Poco/JSON/Parser.h"
|
|
#include "Poco/JSON/Stringifier.h"
|
|
|
|
#include "RESTAPI_SecurityObjects.h"
|
|
#include "framework/RESTAPI_utils.h"
|
|
|
|
using OpenWifi::RESTAPI_utils::field_from_json;
|
|
using OpenWifi::RESTAPI_utils::field_to_json;
|
|
|
|
namespace OpenWifi::SecurityObjects {
|
|
|
|
void AclTemplate::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "Read", Read_);
|
|
field_to_json(Obj, "ReadWrite", ReadWrite_);
|
|
field_to_json(Obj, "ReadWriteCreate", ReadWriteCreate_);
|
|
field_to_json(Obj, "Delete", Delete_);
|
|
field_to_json(Obj, "PortalLogin", PortalLogin_);
|
|
}
|
|
|
|
ResourceAccessType ResourceAccessTypeFromString(const std::string &s) {
|
|
if (!Poco::icompare(s, "READ"))
|
|
return READ;
|
|
if (!Poco::icompare(s, "MODIFY"))
|
|
return MODIFY;
|
|
if (!Poco::icompare(s, "DELETE"))
|
|
return DELETE;
|
|
if (!Poco::icompare(s, "CREATE"))
|
|
return CREATE;
|
|
if (!Poco::icompare(s, "TEST"))
|
|
return TEST;
|
|
if (!Poco::icompare(s, "MOVE"))
|
|
return MOVE;
|
|
return NONE;
|
|
}
|
|
|
|
std::string ResourceAccessTypeToString(const ResourceAccessType &T) {
|
|
switch (T) {
|
|
case READ:
|
|
return "READ";
|
|
case MODIFY:
|
|
return "MODIFY";
|
|
case DELETE:
|
|
return "DELETE";
|
|
case CREATE:
|
|
return "CREATE";
|
|
case TEST:
|
|
return "TEST";
|
|
case MOVE:
|
|
return "MOVE";
|
|
default:
|
|
return "NONE";
|
|
}
|
|
}
|
|
|
|
USER_ROLE UserTypeFromString(const std::string &U) {
|
|
if (!Poco::icompare(U, "root"))
|
|
return ROOT;
|
|
else if (!Poco::icompare(U, "admin"))
|
|
return ADMIN;
|
|
else if (!Poco::icompare(U, "subscriber"))
|
|
return SUBSCRIBER;
|
|
else if (!Poco::icompare(U, "partner"))
|
|
return PARTNER;
|
|
else if (!Poco::icompare(U, "csr"))
|
|
return CSR;
|
|
else if (!Poco::icompare(U, "system"))
|
|
return SYSTEM;
|
|
else if (!Poco::icompare(U, "installer"))
|
|
return INSTALLER;
|
|
else if (!Poco::icompare(U, "noc"))
|
|
return NOC;
|
|
else if (!Poco::icompare(U, "accounting"))
|
|
return ACCOUNTING;
|
|
return UNKNOWN;
|
|
}
|
|
|
|
std::string UserTypeToString(USER_ROLE U) {
|
|
switch (U) {
|
|
case ROOT:
|
|
return "root";
|
|
case ADMIN:
|
|
return "admin";
|
|
case SUBSCRIBER:
|
|
return "subscriber";
|
|
case PARTNER:
|
|
return "partner";
|
|
case CSR:
|
|
return "csr";
|
|
case SYSTEM:
|
|
return "system";
|
|
case INSTALLER:
|
|
return "installer";
|
|
case NOC:
|
|
return "noc";
|
|
case ACCOUNTING:
|
|
return "accounting";
|
|
case UNKNOWN:
|
|
default:
|
|
return "unknown";
|
|
}
|
|
}
|
|
|
|
bool AclTemplate::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "Read", Read_);
|
|
field_from_json(Obj, "ReadWrite", ReadWrite_);
|
|
field_from_json(Obj, "ReadWriteCreate", ReadWriteCreate_);
|
|
field_from_json(Obj, "Delete", Delete_);
|
|
field_from_json(Obj, "PortalLogin", PortalLogin_);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: AclTemplate" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void WebToken::to_json(Poco::JSON::Object &Obj) const {
|
|
Poco::JSON::Object AclTemplateObj;
|
|
acl_template_.to_json(AclTemplateObj);
|
|
field_to_json(Obj, "access_token", access_token_);
|
|
field_to_json(Obj, "refresh_token", refresh_token_);
|
|
field_to_json(Obj, "token_type", token_type_);
|
|
field_to_json(Obj, "expires_in", expires_in_);
|
|
field_to_json(Obj, "idle_timeout", idle_timeout_);
|
|
field_to_json(Obj, "created", created_);
|
|
field_to_json(Obj, "username", username_);
|
|
field_to_json(Obj, "userMustChangePassword", userMustChangePassword);
|
|
field_to_json(Obj, "errorCode", errorCode);
|
|
Obj.set("aclTemplate", AclTemplateObj);
|
|
field_to_json(Obj, "errorCode", errorCode);
|
|
field_to_json(Obj, "lastRefresh", lastRefresh_);
|
|
}
|
|
|
|
bool WebToken::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
if (Obj->isObject("aclTemplate")) {
|
|
Poco::JSON::Object::Ptr AclTemplate = Obj->getObject("aclTemplate");
|
|
acl_template_.from_json(AclTemplate);
|
|
}
|
|
field_from_json(Obj, "access_token", access_token_);
|
|
field_from_json(Obj, "refresh_token", refresh_token_);
|
|
field_from_json(Obj, "token_type", token_type_);
|
|
field_from_json(Obj, "expires_in", expires_in_);
|
|
field_from_json(Obj, "idle_timeout", idle_timeout_);
|
|
field_from_json(Obj, "created", created_);
|
|
field_from_json(Obj, "username", username_);
|
|
field_from_json(Obj, "userMustChangePassword", userMustChangePassword);
|
|
field_from_json(Obj, "lastRefresh", lastRefresh_);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: WebToken" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void MobilePhoneNumber::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "number", number);
|
|
field_to_json(Obj, "verified", verified);
|
|
field_to_json(Obj, "primary", primary);
|
|
}
|
|
|
|
bool MobilePhoneNumber::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "number", number);
|
|
field_from_json(Obj, "verified", verified);
|
|
field_from_json(Obj, "primary", primary);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: MobilePhoneNumber" << std::endl;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
void MfaAuthInfo::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "enabled", enabled);
|
|
field_to_json(Obj, "method", method);
|
|
}
|
|
|
|
bool MfaAuthInfo::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "enabled", enabled);
|
|
field_from_json(Obj, "method", method);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: MfaAuthInfo" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void UserLoginLoginExtensions::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "mobiles", mobiles);
|
|
field_to_json(Obj, "mfa", mfa);
|
|
field_to_json(Obj, "authenticatorSecret", authenticatorSecret);
|
|
}
|
|
|
|
bool UserLoginLoginExtensions::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "mobiles", mobiles);
|
|
field_from_json(Obj, "mfa", mfa);
|
|
field_from_json(Obj, "authenticatorSecret", authenticatorSecret);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: UserLoginLoginExtensions" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void MFAChallengeRequest::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "uuid", uuid);
|
|
field_to_json(Obj, "question", question);
|
|
field_to_json(Obj, "created", created);
|
|
field_to_json(Obj, "method", method);
|
|
}
|
|
|
|
bool MFAChallengeRequest::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "uuid", uuid);
|
|
field_from_json(Obj, "question", question);
|
|
field_from_json(Obj, "created", created);
|
|
field_from_json(Obj, "method", method);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: MFAChallengeRequest" << std::endl;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
void MFAChallengeResponse::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "uuid", uuid);
|
|
field_to_json(Obj, "answer", answer);
|
|
}
|
|
|
|
bool MFAChallengeResponse::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "uuid", uuid);
|
|
field_from_json(Obj, "answer", answer);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: MFAChallengeResponse" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void UserInfo::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "id", id);
|
|
field_to_json(Obj, "name", name);
|
|
field_to_json(Obj, "description", description);
|
|
field_to_json(Obj, "avatar", avatar);
|
|
field_to_json(Obj, "email", email);
|
|
field_to_json(Obj, "validated", validated);
|
|
field_to_json(Obj, "validationEmail", validationEmail);
|
|
field_to_json(Obj, "validationDate", validationDate);
|
|
field_to_json(Obj, "creationDate", creationDate);
|
|
field_to_json(Obj, "validationURI", validationURI);
|
|
field_to_json(Obj, "changePassword", changePassword);
|
|
field_to_json(Obj, "lastLogin", lastLogin);
|
|
field_to_json(Obj, "currentLoginURI", currentLoginURI);
|
|
field_to_json(Obj, "lastPasswordChange", lastPasswordChange);
|
|
field_to_json(Obj, "lastEmailCheck", lastEmailCheck);
|
|
field_to_json(Obj, "waitingForEmailCheck", waitingForEmailCheck);
|
|
field_to_json(Obj, "locale", locale);
|
|
field_to_json(Obj, "notes", notes);
|
|
field_to_json(Obj, "location", location);
|
|
field_to_json(Obj, "owner", owner);
|
|
field_to_json(Obj, "suspended", suspended);
|
|
field_to_json(Obj, "blackListed", blackListed);
|
|
field_to_json<USER_ROLE>(Obj, "userRole", userRole, UserTypeToString);
|
|
field_to_json(Obj, "userTypeProprietaryInfo", userTypeProprietaryInfo);
|
|
field_to_json(Obj, "securityPolicy", securityPolicy);
|
|
field_to_json(Obj, "securityPolicyChange", securityPolicyChange);
|
|
field_to_json(Obj, "currentPassword", currentPassword);
|
|
field_to_json(Obj, "lastPasswords", lastPasswords);
|
|
field_to_json(Obj, "oauthType", oauthType);
|
|
field_to_json(Obj, "oauthUserInfo", oauthUserInfo);
|
|
field_to_json(Obj, "modified", modified);
|
|
field_to_json(Obj, "signingUp", signingUp);
|
|
};
|
|
|
|
bool UserInfo::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "id", id);
|
|
field_from_json(Obj, "name", name);
|
|
field_from_json(Obj, "description", description);
|
|
field_from_json(Obj, "avatar", avatar);
|
|
field_from_json(Obj, "email", email);
|
|
field_from_json(Obj, "validationEmail", validationEmail);
|
|
field_from_json(Obj, "validationURI", validationURI);
|
|
field_from_json(Obj, "currentLoginURI", currentLoginURI);
|
|
field_from_json(Obj, "locale", locale);
|
|
field_from_json(Obj, "notes", notes);
|
|
field_from_json(Obj, "location", location);
|
|
field_from_json(Obj, "owner", owner);
|
|
field_from_json<USER_ROLE>(Obj, "userRole", userRole, UserTypeFromString);
|
|
field_from_json(Obj, "securityPolicy", securityPolicy);
|
|
field_from_json(Obj, "userTypeProprietaryInfo", userTypeProprietaryInfo);
|
|
field_from_json(Obj, "validationDate", validationDate);
|
|
field_from_json(Obj, "creationDate", creationDate);
|
|
field_from_json(Obj, "lastLogin", lastLogin);
|
|
field_from_json(Obj, "lastPasswordChange", lastPasswordChange);
|
|
field_from_json(Obj, "lastEmailCheck", lastEmailCheck);
|
|
field_from_json(Obj, "securityPolicyChange", securityPolicyChange);
|
|
field_from_json(Obj, "validated", validated);
|
|
field_from_json(Obj, "changePassword", changePassword);
|
|
field_from_json(Obj, "waitingForEmailCheck", waitingForEmailCheck);
|
|
field_from_json(Obj, "suspended", suspended);
|
|
field_from_json(Obj, "blackListed", blackListed);
|
|
field_from_json(Obj, "currentPassword", currentPassword);
|
|
field_from_json(Obj, "lastPasswords", lastPasswords);
|
|
field_from_json(Obj, "oauthType", oauthType);
|
|
field_from_json(Obj, "oauthUserInfo", oauthUserInfo);
|
|
field_from_json(Obj, "modified", modified);
|
|
field_from_json(Obj, "signingUp", signingUp);
|
|
return true;
|
|
} catch (const Poco::Exception &E) {
|
|
std::cout << "Cannot parse: UserInfo" << std::endl;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
void UserInfoList::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "users", users);
|
|
}
|
|
|
|
bool UserInfoList::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "users", users);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: InternalServiceInfo" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void InternalServiceInfo::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "privateURI", privateURI);
|
|
field_to_json(Obj, "publicURI", publicURI);
|
|
field_to_json(Obj, "token", token);
|
|
};
|
|
|
|
bool InternalServiceInfo::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "privateURI", privateURI);
|
|
field_from_json(Obj, "publicURI", publicURI);
|
|
field_from_json(Obj, "token", token);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: InternalServiceInfo" << std::endl;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
void InternalSystemServices::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "key", key);
|
|
field_to_json(Obj, "version", version);
|
|
field_to_json(Obj, "services", services);
|
|
};
|
|
|
|
bool InternalSystemServices::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "key", key);
|
|
field_from_json(Obj, "version", version);
|
|
field_from_json(Obj, "services", services);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: InternalSystemServices" << std::endl;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
void SystemEndpoint::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "type", type);
|
|
field_to_json(Obj, "id", id);
|
|
field_to_json(Obj, "vendor", vendor);
|
|
field_to_json(Obj, "uri", uri);
|
|
field_to_json(Obj, "authenticationType", authenticationType);
|
|
};
|
|
|
|
bool SystemEndpoint::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "type", type);
|
|
field_from_json(Obj, "id", id);
|
|
field_from_json(Obj, "vendor", vendor);
|
|
field_from_json(Obj, "uri", uri);
|
|
field_from_json(Obj, "authenticationType", authenticationType);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: SystemEndpoint" << std::endl;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
void SystemEndpointList::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "endpoints", endpoints);
|
|
}
|
|
|
|
bool SystemEndpointList::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "endpoints", endpoints);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: SystemEndpointList" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void UserInfoAndPolicy::to_json(Poco::JSON::Object &Obj) const {
|
|
Poco::JSON::Object UI, TI;
|
|
userinfo.to_json(UI);
|
|
webtoken.to_json(TI);
|
|
Obj.set("tokenInfo", TI);
|
|
Obj.set("userInfo", UI);
|
|
}
|
|
|
|
bool UserInfoAndPolicy::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "tokenInfo", webtoken);
|
|
field_from_json(Obj, "userInfo", userinfo);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: UserInfoAndPolicy" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void NoteInfo::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "created", created);
|
|
field_to_json(Obj, "createdBy", createdBy);
|
|
field_to_json(Obj, "note", note);
|
|
}
|
|
|
|
bool NoteInfo::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "created", created);
|
|
field_from_json(Obj, "createdBy", createdBy);
|
|
field_from_json(Obj, "note", note);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: NoteInfo" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool MergeNotes(Poco::JSON::Object::Ptr Obj, const UserInfo &UInfo, NoteInfoVec &Notes) {
|
|
try {
|
|
if (Obj->has("notes") && Obj->isArray("notes")) {
|
|
SecurityObjects::NoteInfoVec NIV;
|
|
NIV = RESTAPI_utils::to_object_array<SecurityObjects::NoteInfo>(
|
|
Obj->get("notes").toString());
|
|
for (auto const &i : NIV) {
|
|
SecurityObjects::NoteInfo ii{.created = (uint64_t)Utils::Now(),
|
|
.createdBy = UInfo.email,
|
|
.note = i.note};
|
|
Notes.push_back(ii);
|
|
}
|
|
}
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: MergeNotes" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool MergeNotes(const NoteInfoVec &NewNotes, const UserInfo &UInfo,
|
|
NoteInfoVec &ExistingNotes) {
|
|
for (auto const &i : NewNotes) {
|
|
SecurityObjects::NoteInfo ii{
|
|
.created = (uint64_t)Utils::Now(), .createdBy = UInfo.email, .note = i.note};
|
|
ExistingNotes.push_back(ii);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void ProfileAction::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "resource", resource);
|
|
field_to_json<ResourceAccessType>(Obj, "access", access, ResourceAccessTypeToString);
|
|
}
|
|
|
|
bool ProfileAction::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "resource", resource);
|
|
field_from_json<ResourceAccessType>(Obj, "access", access,
|
|
ResourceAccessTypeFromString);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: ProfileAction" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void SecurityProfile::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "id", id);
|
|
field_to_json(Obj, "name", name);
|
|
field_to_json(Obj, "description", description);
|
|
field_to_json(Obj, "policy", policy);
|
|
field_to_json(Obj, "role", role);
|
|
field_to_json(Obj, "notes", notes);
|
|
}
|
|
|
|
bool SecurityProfile::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "id", id);
|
|
field_from_json(Obj, "name", name);
|
|
field_from_json(Obj, "description", description);
|
|
field_from_json(Obj, "policy", policy);
|
|
field_from_json(Obj, "role", role);
|
|
field_from_json(Obj, "notes", notes);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: SecurityProfile" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void SecurityProfileList::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "profiles", profiles);
|
|
}
|
|
|
|
bool SecurityProfileList::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "profiles", profiles);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: SecurityProfileList" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void ActionLink::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "id", id);
|
|
field_to_json(Obj, "action", action);
|
|
field_to_json(Obj, "userId", userId);
|
|
field_to_json(Obj, "actionTemplate", actionTemplate);
|
|
field_to_json(Obj, "variables", variables);
|
|
field_to_json(Obj, "locale", locale);
|
|
field_to_json(Obj, "message", message);
|
|
field_to_json(Obj, "sent", sent);
|
|
field_to_json(Obj, "created", created);
|
|
field_to_json(Obj, "expires", expires);
|
|
field_to_json(Obj, "completed", completed);
|
|
field_to_json(Obj, "canceled", canceled);
|
|
field_to_json(Obj, "userAction", userAction);
|
|
}
|
|
|
|
bool ActionLink::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "id", id);
|
|
field_from_json(Obj, "action", action);
|
|
field_from_json(Obj, "userId", userId);
|
|
field_from_json(Obj, "actionTemplate", actionTemplate);
|
|
field_from_json(Obj, "variables", variables);
|
|
field_from_json(Obj, "locale", locale);
|
|
field_from_json(Obj, "message", message);
|
|
field_from_json(Obj, "sent", sent);
|
|
field_from_json(Obj, "created", created);
|
|
field_from_json(Obj, "expires", expires);
|
|
field_from_json(Obj, "completed", completed);
|
|
field_from_json(Obj, "canceled", canceled);
|
|
field_from_json(Obj, "userAction", userAction);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: ActionLink" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void Preferences::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "id", id);
|
|
field_to_json(Obj, "modified", modified);
|
|
field_to_json(Obj, "data", data);
|
|
}
|
|
|
|
bool Preferences::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "id", id);
|
|
field_from_json(Obj, "modified", modified);
|
|
field_from_json(Obj, "data", data);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: Preferences" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void SubMfaConfig::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "id", id);
|
|
field_to_json(Obj, "type", type);
|
|
field_to_json(Obj, "sms", sms);
|
|
field_to_json(Obj, "email", email);
|
|
}
|
|
|
|
bool SubMfaConfig::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "id", id);
|
|
field_from_json(Obj, "type", type);
|
|
field_from_json(Obj, "sms", sms);
|
|
field_from_json(Obj, "email", email);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: SubMfaConfig" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void Token::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "token", token);
|
|
field_to_json(Obj, "refreshToken", refreshToken);
|
|
field_to_json(Obj, "tokenType", tokenType);
|
|
field_to_json(Obj, "userName", userName);
|
|
field_to_json(Obj, "created", created);
|
|
field_to_json(Obj, "expires", expires);
|
|
field_to_json(Obj, "idleTimeout", idleTimeout);
|
|
field_to_json(Obj, "revocationDate", revocationDate);
|
|
field_to_json(Obj, "lastRefresh", lastRefresh);
|
|
}
|
|
|
|
bool Token::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "token", token);
|
|
field_from_json(Obj, "refreshToken", refreshToken);
|
|
field_from_json(Obj, "tokenType", tokenType);
|
|
field_from_json(Obj, "userName", userName);
|
|
field_from_json(Obj, "created", created);
|
|
field_from_json(Obj, "expires", expires);
|
|
field_from_json(Obj, "idleTimeout", idleTimeout);
|
|
field_from_json(Obj, "revocationDate", revocationDate);
|
|
field_from_json(Obj, "lastRefresh", lastRefresh);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: Token" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void LoginRecordInfo::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "sessionId", sessionId);
|
|
field_to_json(Obj, "userId", userId);
|
|
field_to_json(Obj, "email", email);
|
|
field_to_json(Obj, "login", login);
|
|
field_to_json(Obj, "logout", logout);
|
|
}
|
|
|
|
void ApiKeyAccessRight::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "service", service);
|
|
field_to_json(Obj, "access", access);
|
|
}
|
|
|
|
bool ApiKeyAccessRight::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "service", service);
|
|
field_from_json(Obj, "access", access);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: Token" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void ApiKeyAccessRightList::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "acls", acls);
|
|
}
|
|
|
|
bool ApiKeyAccessRightList::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "acls", acls);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: Token" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void ApiKeyEntry::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "id", id);
|
|
field_to_json(Obj, "userUuid", userUuid);
|
|
field_to_json(Obj, "name", name);
|
|
field_to_json(Obj, "apiKey", apiKey);
|
|
field_to_json(Obj, "salt", salt);
|
|
field_to_json(Obj, "description", description);
|
|
field_to_json(Obj, "expiresOn", expiresOn);
|
|
field_to_json(Obj, "rights", rights);
|
|
field_to_json(Obj, "lastUse", lastUse);
|
|
}
|
|
|
|
bool ApiKeyEntry::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "id", id);
|
|
field_from_json(Obj, "userUuid", userUuid);
|
|
field_from_json(Obj, "name", name);
|
|
field_from_json(Obj, "apiKey", apiKey);
|
|
field_from_json(Obj, "salt", salt);
|
|
field_from_json(Obj, "description", description);
|
|
field_from_json(Obj, "expiresOn", expiresOn);
|
|
field_from_json(Obj, "rights", rights);
|
|
field_from_json(Obj, "lastUse", lastUse);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: Token" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void ApiKeyEntryList::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "apiKeys", apiKeys);
|
|
}
|
|
|
|
bool ApiKeyEntryList::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "apiKeys", apiKeys);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: Token" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void ExtraSystemConfiguration::to_json(Poco::JSON::Object &Obj) const {
|
|
field_to_json(Obj, "parameterName", parameterName);
|
|
field_to_json(Obj, "parameterValue", parameterValue);
|
|
}
|
|
|
|
bool ExtraSystemConfiguration::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
|
try {
|
|
field_from_json(Obj, "parameterName", parameterName);
|
|
field_from_json(Obj, "parameterValue", parameterValue);
|
|
return true;
|
|
} catch (...) {
|
|
std::cout << "Cannot parse: Token" << std::endl;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
} // namespace OpenWifi::SecurityObjects
|