xref: /openbmc/bmcweb/features/redfish/lib/account_service.hpp (revision 88d16c9a01366cfcc4e675683a7e667da5d29924)
1*88d16c9aSLewanczyk, Dawid /*
2*88d16c9aSLewanczyk, Dawid // Copyright (c) 2018 Intel Corporation
3*88d16c9aSLewanczyk, Dawid //
4*88d16c9aSLewanczyk, Dawid // Licensed under the Apache License, Version 2.0 (the "License");
5*88d16c9aSLewanczyk, Dawid // you may not use this file except in compliance with the License.
6*88d16c9aSLewanczyk, Dawid // You may obtain a copy of the License at
7*88d16c9aSLewanczyk, Dawid //
8*88d16c9aSLewanczyk, Dawid //      http://www.apache.org/licenses/LICENSE-2.0
9*88d16c9aSLewanczyk, Dawid //
10*88d16c9aSLewanczyk, Dawid // Unless required by applicable law or agreed to in writing, software
11*88d16c9aSLewanczyk, Dawid // distributed under the License is distributed on an "AS IS" BASIS,
12*88d16c9aSLewanczyk, Dawid // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*88d16c9aSLewanczyk, Dawid // See the License for the specific language governing permissions and
14*88d16c9aSLewanczyk, Dawid // limitations under the License.
15*88d16c9aSLewanczyk, Dawid */
16*88d16c9aSLewanczyk, Dawid #pragma once
17*88d16c9aSLewanczyk, Dawid 
18*88d16c9aSLewanczyk, Dawid #include "node.hpp"
19*88d16c9aSLewanczyk, Dawid 
20*88d16c9aSLewanczyk, Dawid namespace redfish {
21*88d16c9aSLewanczyk, Dawid 
22*88d16c9aSLewanczyk, Dawid class AccountService : public Node {
23*88d16c9aSLewanczyk, Dawid  public:
24*88d16c9aSLewanczyk, Dawid   template <typename CrowApp, typename PrivilegeProvider>
25*88d16c9aSLewanczyk, Dawid   AccountService(CrowApp& app, PrivilegeProvider& provider)
26*88d16c9aSLewanczyk, Dawid       : Node(app, provider, "#AccountService.v1_1_0.AccountService",
27*88d16c9aSLewanczyk, Dawid              "/redfish/v1/AccountService/") {
28*88d16c9aSLewanczyk, Dawid     nodeJson["@odata.id"] = "/redfish/v1/AccountService";
29*88d16c9aSLewanczyk, Dawid     nodeJson["@odata.type"] = "#AccountService.v1_1_0.AccountService";
30*88d16c9aSLewanczyk, Dawid     nodeJson["@odata.context"] =
31*88d16c9aSLewanczyk, Dawid         "/redfish/v1/$metadata#AccountService.AccountService";
32*88d16c9aSLewanczyk, Dawid     nodeJson["Id"] = "AccountService";
33*88d16c9aSLewanczyk, Dawid     nodeJson["Description"] = "BMC User Accounts";
34*88d16c9aSLewanczyk, Dawid     nodeJson["Name"] = "Account Service";
35*88d16c9aSLewanczyk, Dawid     nodeJson["Status"]["State"] = "Enabled";
36*88d16c9aSLewanczyk, Dawid     nodeJson["Status"]["Health"] = "OK";
37*88d16c9aSLewanczyk, Dawid     nodeJson["Status"]["HealthRollup"] = "OK";
38*88d16c9aSLewanczyk, Dawid     nodeJson["ServiceEnabled"] = true;
39*88d16c9aSLewanczyk, Dawid     nodeJson["MinPasswordLength"] = 1;
40*88d16c9aSLewanczyk, Dawid     nodeJson["MaxPasswordLength"] = 20;
41*88d16c9aSLewanczyk, Dawid     nodeJson["Accounts"]["@odata.id"] = "/redfish/v1/AccountService/Accounts";
42*88d16c9aSLewanczyk, Dawid     nodeJson["Roles"]["@odata.id"] = "/redfish/v1/AccountService/Roles";
43*88d16c9aSLewanczyk, Dawid   }
44*88d16c9aSLewanczyk, Dawid 
45*88d16c9aSLewanczyk, Dawid  private:
46*88d16c9aSLewanczyk, Dawid   void doGet(crow::response& res, const crow::request& req,
47*88d16c9aSLewanczyk, Dawid              const std::vector<std::string>& params) override {
48*88d16c9aSLewanczyk, Dawid     res.json_value = nodeJson;
49*88d16c9aSLewanczyk, Dawid     res.end();
50*88d16c9aSLewanczyk, Dawid   }
51*88d16c9aSLewanczyk, Dawid 
52*88d16c9aSLewanczyk, Dawid   nlohmann::json nodeJson;
53*88d16c9aSLewanczyk, Dawid };
54*88d16c9aSLewanczyk, Dawid 
55*88d16c9aSLewanczyk, Dawid }  // namespace redfish
56