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