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