1*853c0dc5SEd Tanous #pragma once
2*853c0dc5SEd Tanous #include <nlohmann/json.hpp>
3*853c0dc5SEd Tanous 
4*853c0dc5SEd Tanous namespace external_account_provider
5*853c0dc5SEd Tanous {
6*853c0dc5SEd Tanous // clang-format off
7*853c0dc5SEd Tanous 
8*853c0dc5SEd Tanous enum class AccountProviderTypes{
9*853c0dc5SEd Tanous     Invalid,
10*853c0dc5SEd Tanous     RedfishService,
11*853c0dc5SEd Tanous     ActiveDirectoryService,
12*853c0dc5SEd Tanous     LDAPService,
13*853c0dc5SEd Tanous     OEM,
14*853c0dc5SEd Tanous     TACACSplus,
15*853c0dc5SEd Tanous     OAuth2,
16*853c0dc5SEd Tanous };
17*853c0dc5SEd Tanous 
18*853c0dc5SEd Tanous enum class AuthenticationTypes{
19*853c0dc5SEd Tanous     Invalid,
20*853c0dc5SEd Tanous     Token,
21*853c0dc5SEd Tanous     KerberosKeytab,
22*853c0dc5SEd Tanous     UsernameAndPassword,
23*853c0dc5SEd Tanous     OEM,
24*853c0dc5SEd Tanous };
25*853c0dc5SEd Tanous 
26*853c0dc5SEd Tanous enum class TACACSplusPasswordExchangeProtocol{
27*853c0dc5SEd Tanous     Invalid,
28*853c0dc5SEd Tanous     ASCII,
29*853c0dc5SEd Tanous     PAP,
30*853c0dc5SEd Tanous     CHAP,
31*853c0dc5SEd Tanous     MSCHAPv1,
32*853c0dc5SEd Tanous     MSCHAPv2,
33*853c0dc5SEd Tanous };
34*853c0dc5SEd Tanous 
35*853c0dc5SEd Tanous enum class OAuth2Mode{
36*853c0dc5SEd Tanous     Invalid,
37*853c0dc5SEd Tanous     Discovery,
38*853c0dc5SEd Tanous     Offline,
39*853c0dc5SEd Tanous };
40*853c0dc5SEd Tanous 
41*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(AccountProviderTypes, {
42*853c0dc5SEd Tanous     {AccountProviderTypes::Invalid, "Invalid"},
43*853c0dc5SEd Tanous     {AccountProviderTypes::RedfishService, "RedfishService"},
44*853c0dc5SEd Tanous     {AccountProviderTypes::ActiveDirectoryService, "ActiveDirectoryService"},
45*853c0dc5SEd Tanous     {AccountProviderTypes::LDAPService, "LDAPService"},
46*853c0dc5SEd Tanous     {AccountProviderTypes::OEM, "OEM"},
47*853c0dc5SEd Tanous     {AccountProviderTypes::TACACSplus, "TACACSplus"},
48*853c0dc5SEd Tanous     {AccountProviderTypes::OAuth2, "OAuth2"},
49*853c0dc5SEd Tanous });
50*853c0dc5SEd Tanous 
51*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(AuthenticationTypes, {
52*853c0dc5SEd Tanous     {AuthenticationTypes::Invalid, "Invalid"},
53*853c0dc5SEd Tanous     {AuthenticationTypes::Token, "Token"},
54*853c0dc5SEd Tanous     {AuthenticationTypes::KerberosKeytab, "KerberosKeytab"},
55*853c0dc5SEd Tanous     {AuthenticationTypes::UsernameAndPassword, "UsernameAndPassword"},
56*853c0dc5SEd Tanous     {AuthenticationTypes::OEM, "OEM"},
57*853c0dc5SEd Tanous });
58*853c0dc5SEd Tanous 
59*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(TACACSplusPasswordExchangeProtocol, {
60*853c0dc5SEd Tanous     {TACACSplusPasswordExchangeProtocol::Invalid, "Invalid"},
61*853c0dc5SEd Tanous     {TACACSplusPasswordExchangeProtocol::ASCII, "ASCII"},
62*853c0dc5SEd Tanous     {TACACSplusPasswordExchangeProtocol::PAP, "PAP"},
63*853c0dc5SEd Tanous     {TACACSplusPasswordExchangeProtocol::CHAP, "CHAP"},
64*853c0dc5SEd Tanous     {TACACSplusPasswordExchangeProtocol::MSCHAPv1, "MSCHAPv1"},
65*853c0dc5SEd Tanous     {TACACSplusPasswordExchangeProtocol::MSCHAPv2, "MSCHAPv2"},
66*853c0dc5SEd Tanous });
67*853c0dc5SEd Tanous 
68*853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(OAuth2Mode, {
69*853c0dc5SEd Tanous     {OAuth2Mode::Invalid, "Invalid"},
70*853c0dc5SEd Tanous     {OAuth2Mode::Discovery, "Discovery"},
71*853c0dc5SEd Tanous     {OAuth2Mode::Offline, "Offline"},
72*853c0dc5SEd Tanous });
73*853c0dc5SEd Tanous 
74*853c0dc5SEd Tanous }
75*853c0dc5SEd Tanous // clang-format on
76