10ec8b83dSEd Tanous #pragma once 20ec8b83dSEd Tanous #include <nlohmann/json.hpp> 30ec8b83dSEd Tanous 40ec8b83dSEd Tanous namespace account_service 50ec8b83dSEd Tanous { 60ec8b83dSEd Tanous // clang-format off 70ec8b83dSEd Tanous 8a8d8f9d8SEd Tanous enum class MFABypassType{ 9a8d8f9d8SEd Tanous Invalid, 10a8d8f9d8SEd Tanous All, 11a8d8f9d8SEd Tanous SecurID, 12a8d8f9d8SEd Tanous GoogleAuthenticator, 13a8d8f9d8SEd Tanous MicrosoftAuthenticator, 14a8d8f9d8SEd Tanous ClientCertificate, 15*e9cc1bc9SEd Tanous OneTimePasscode, 16a8d8f9d8SEd Tanous OEM, 17a8d8f9d8SEd Tanous }; 18a8d8f9d8SEd Tanous 190ec8b83dSEd Tanous enum class LocalAccountAuth{ 200ec8b83dSEd Tanous Invalid, 210ec8b83dSEd Tanous Enabled, 220ec8b83dSEd Tanous Disabled, 230ec8b83dSEd Tanous Fallback, 240ec8b83dSEd Tanous LocalFirst, 250ec8b83dSEd Tanous }; 260ec8b83dSEd Tanous 270ec8b83dSEd Tanous enum class AccountProviderTypes{ 280ec8b83dSEd Tanous Invalid, 290ec8b83dSEd Tanous RedfishService, 300ec8b83dSEd Tanous ActiveDirectoryService, 310ec8b83dSEd Tanous LDAPService, 320ec8b83dSEd Tanous OEM, 330ec8b83dSEd Tanous TACACSplus, 340ec8b83dSEd Tanous OAuth2, 350ec8b83dSEd Tanous }; 360ec8b83dSEd Tanous 370ec8b83dSEd Tanous enum class AuthenticationTypes{ 380ec8b83dSEd Tanous Invalid, 390ec8b83dSEd Tanous Token, 400ec8b83dSEd Tanous KerberosKeytab, 410ec8b83dSEd Tanous UsernameAndPassword, 420ec8b83dSEd Tanous OEM, 430ec8b83dSEd Tanous }; 440ec8b83dSEd Tanous 450ec8b83dSEd Tanous enum class TACACSplusPasswordExchangeProtocol{ 460ec8b83dSEd Tanous Invalid, 470ec8b83dSEd Tanous ASCII, 480ec8b83dSEd Tanous PAP, 490ec8b83dSEd Tanous CHAP, 500ec8b83dSEd Tanous MSCHAPv1, 510ec8b83dSEd Tanous MSCHAPv2, 520ec8b83dSEd Tanous }; 530ec8b83dSEd Tanous 540ec8b83dSEd Tanous enum class OAuth2Mode{ 550ec8b83dSEd Tanous Invalid, 560ec8b83dSEd Tanous Discovery, 570ec8b83dSEd Tanous Offline, 580ec8b83dSEd Tanous }; 590ec8b83dSEd Tanous 60a8d8f9d8SEd Tanous enum class CertificateMappingAttribute{ 61a8d8f9d8SEd Tanous Invalid, 62a8d8f9d8SEd Tanous Whole, 63a8d8f9d8SEd Tanous CommonName, 64a8d8f9d8SEd Tanous UserPrincipalName, 65a8d8f9d8SEd Tanous }; 66a8d8f9d8SEd Tanous 67a8d8f9d8SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(MFABypassType, { 68a8d8f9d8SEd Tanous {MFABypassType::Invalid, "Invalid"}, 69a8d8f9d8SEd Tanous {MFABypassType::All, "All"}, 70a8d8f9d8SEd Tanous {MFABypassType::SecurID, "SecurID"}, 71a8d8f9d8SEd Tanous {MFABypassType::GoogleAuthenticator, "GoogleAuthenticator"}, 72a8d8f9d8SEd Tanous {MFABypassType::MicrosoftAuthenticator, "MicrosoftAuthenticator"}, 73a8d8f9d8SEd Tanous {MFABypassType::ClientCertificate, "ClientCertificate"}, 74*e9cc1bc9SEd Tanous {MFABypassType::OneTimePasscode, "OneTimePasscode"}, 75a8d8f9d8SEd Tanous {MFABypassType::OEM, "OEM"}, 76a8d8f9d8SEd Tanous }); 77a8d8f9d8SEd Tanous 780ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(LocalAccountAuth, { 790ec8b83dSEd Tanous {LocalAccountAuth::Invalid, "Invalid"}, 800ec8b83dSEd Tanous {LocalAccountAuth::Enabled, "Enabled"}, 810ec8b83dSEd Tanous {LocalAccountAuth::Disabled, "Disabled"}, 820ec8b83dSEd Tanous {LocalAccountAuth::Fallback, "Fallback"}, 830ec8b83dSEd Tanous {LocalAccountAuth::LocalFirst, "LocalFirst"}, 840ec8b83dSEd Tanous }); 850ec8b83dSEd Tanous 860ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(AccountProviderTypes, { 870ec8b83dSEd Tanous {AccountProviderTypes::Invalid, "Invalid"}, 880ec8b83dSEd Tanous {AccountProviderTypes::RedfishService, "RedfishService"}, 890ec8b83dSEd Tanous {AccountProviderTypes::ActiveDirectoryService, "ActiveDirectoryService"}, 900ec8b83dSEd Tanous {AccountProviderTypes::LDAPService, "LDAPService"}, 910ec8b83dSEd Tanous {AccountProviderTypes::OEM, "OEM"}, 920ec8b83dSEd Tanous {AccountProviderTypes::TACACSplus, "TACACSplus"}, 930ec8b83dSEd Tanous {AccountProviderTypes::OAuth2, "OAuth2"}, 940ec8b83dSEd Tanous }); 950ec8b83dSEd Tanous 960ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(AuthenticationTypes, { 970ec8b83dSEd Tanous {AuthenticationTypes::Invalid, "Invalid"}, 980ec8b83dSEd Tanous {AuthenticationTypes::Token, "Token"}, 990ec8b83dSEd Tanous {AuthenticationTypes::KerberosKeytab, "KerberosKeytab"}, 1000ec8b83dSEd Tanous {AuthenticationTypes::UsernameAndPassword, "UsernameAndPassword"}, 1010ec8b83dSEd Tanous {AuthenticationTypes::OEM, "OEM"}, 1020ec8b83dSEd Tanous }); 1030ec8b83dSEd Tanous 1040ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(TACACSplusPasswordExchangeProtocol, { 1050ec8b83dSEd Tanous {TACACSplusPasswordExchangeProtocol::Invalid, "Invalid"}, 1060ec8b83dSEd Tanous {TACACSplusPasswordExchangeProtocol::ASCII, "ASCII"}, 1070ec8b83dSEd Tanous {TACACSplusPasswordExchangeProtocol::PAP, "PAP"}, 1080ec8b83dSEd Tanous {TACACSplusPasswordExchangeProtocol::CHAP, "CHAP"}, 1090ec8b83dSEd Tanous {TACACSplusPasswordExchangeProtocol::MSCHAPv1, "MSCHAPv1"}, 1100ec8b83dSEd Tanous {TACACSplusPasswordExchangeProtocol::MSCHAPv2, "MSCHAPv2"}, 1110ec8b83dSEd Tanous }); 1120ec8b83dSEd Tanous 1130ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(OAuth2Mode, { 1140ec8b83dSEd Tanous {OAuth2Mode::Invalid, "Invalid"}, 1150ec8b83dSEd Tanous {OAuth2Mode::Discovery, "Discovery"}, 1160ec8b83dSEd Tanous {OAuth2Mode::Offline, "Offline"}, 1170ec8b83dSEd Tanous }); 1180ec8b83dSEd Tanous 119a8d8f9d8SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(CertificateMappingAttribute, { 120a8d8f9d8SEd Tanous {CertificateMappingAttribute::Invalid, "Invalid"}, 121a8d8f9d8SEd Tanous {CertificateMappingAttribute::Whole, "Whole"}, 122a8d8f9d8SEd Tanous {CertificateMappingAttribute::CommonName, "CommonName"}, 123a8d8f9d8SEd Tanous {CertificateMappingAttribute::UserPrincipalName, "UserPrincipalName"}, 124a8d8f9d8SEd Tanous }); 125a8d8f9d8SEd Tanous 1260ec8b83dSEd Tanous } 1270ec8b83dSEd Tanous // clang-format on 128