xref: /openbmc/bmcweb/features/redfish/lib/account_service.hpp (revision 4b1b8683d31260b3032bb9f9fcde1eadaed4e1e5)
188d16c9aSLewanczyk, Dawid /*
288d16c9aSLewanczyk, Dawid // Copyright (c) 2018 Intel Corporation
388d16c9aSLewanczyk, Dawid //
488d16c9aSLewanczyk, Dawid // Licensed under the Apache License, Version 2.0 (the "License");
588d16c9aSLewanczyk, Dawid // you may not use this file except in compliance with the License.
688d16c9aSLewanczyk, Dawid // You may obtain a copy of the License at
788d16c9aSLewanczyk, Dawid //
888d16c9aSLewanczyk, Dawid //      http://www.apache.org/licenses/LICENSE-2.0
988d16c9aSLewanczyk, Dawid //
1088d16c9aSLewanczyk, Dawid // Unless required by applicable law or agreed to in writing, software
1188d16c9aSLewanczyk, Dawid // distributed under the License is distributed on an "AS IS" BASIS,
1288d16c9aSLewanczyk, Dawid // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1388d16c9aSLewanczyk, Dawid // See the License for the specific language governing permissions and
1488d16c9aSLewanczyk, Dawid // limitations under the License.
1588d16c9aSLewanczyk, Dawid */
1688d16c9aSLewanczyk, Dawid #pragma once
1788d16c9aSLewanczyk, Dawid 
1888d16c9aSLewanczyk, Dawid #include "node.hpp"
1988d16c9aSLewanczyk, Dawid 
2088d16c9aSLewanczyk, Dawid namespace redfish {
2188d16c9aSLewanczyk, Dawid 
2288d16c9aSLewanczyk, Dawid class AccountService : public Node {
2388d16c9aSLewanczyk, Dawid  public:
246c233015SEd Tanous   AccountService(CrowApp& app) : Node(app, "/redfish/v1/AccountService/") {
25c1a46bd2SBorawski.Lukasz     Node::json["@odata.id"] = "/redfish/v1/AccountService";
26c1a46bd2SBorawski.Lukasz     Node::json["@odata.type"] = "#AccountService.v1_1_0.AccountService";
27c1a46bd2SBorawski.Lukasz     Node::json["@odata.context"] =
2888d16c9aSLewanczyk, Dawid         "/redfish/v1/$metadata#AccountService.AccountService";
29c1a46bd2SBorawski.Lukasz     Node::json["Id"] = "AccountService";
30c1a46bd2SBorawski.Lukasz     Node::json["Description"] = "BMC User Accounts";
31c1a46bd2SBorawski.Lukasz     Node::json["Name"] = "Account Service";
32c1a46bd2SBorawski.Lukasz     Node::json["ServiceEnabled"] = true;
33c1a46bd2SBorawski.Lukasz     Node::json["MinPasswordLength"] = 1;
34c1a46bd2SBorawski.Lukasz     Node::json["MaxPasswordLength"] = 20;
35c1a46bd2SBorawski.Lukasz     Node::json["Accounts"]["@odata.id"] = "/redfish/v1/AccountService/Accounts";
36c1a46bd2SBorawski.Lukasz     Node::json["Roles"]["@odata.id"] = "/redfish/v1/AccountService/Roles";
373ebd75f7SEd Tanous 
383ebd75f7SEd Tanous     entityPrivileges = {
39*4b1b8683SBorawski.Lukasz         {boost::beast::http::verb::get,
40*4b1b8683SBorawski.Lukasz          {{"ConfigureUsers"}, {"ConfigureManager"}}},
41e0d918bcSEd Tanous         {boost::beast::http::verb::head, {{"Login"}}},
42e0d918bcSEd Tanous         {boost::beast::http::verb::patch, {{"ConfigureUsers"}}},
43e0d918bcSEd Tanous         {boost::beast::http::verb::put, {{"ConfigureUsers"}}},
44e0d918bcSEd Tanous         {boost::beast::http::verb::delete_, {{"ConfigureUsers"}}},
45e0d918bcSEd Tanous         {boost::beast::http::verb::post, {{"ConfigureUsers"}}}};
4688d16c9aSLewanczyk, Dawid   }
4788d16c9aSLewanczyk, Dawid 
4888d16c9aSLewanczyk, Dawid  private:
4988d16c9aSLewanczyk, Dawid   void doGet(crow::response& res, const crow::request& req,
5088d16c9aSLewanczyk, Dawid              const std::vector<std::string>& params) override {
51c1a46bd2SBorawski.Lukasz     res.json_value = Node::json;
5288d16c9aSLewanczyk, Dawid     res.end();
5388d16c9aSLewanczyk, Dawid   }
5488d16c9aSLewanczyk, Dawid };
5588d16c9aSLewanczyk, Dawid 
5688d16c9aSLewanczyk, Dawid }  // namespace redfish
57