xref: /openbmc/bmcweb/features/redfish/lib/roles.hpp (revision 4e49bd4bd5a4e0626e437165f1eafb7c8a8fa3a6)
1*4e49bd4bSLewanczyk, Dawid /*
2*4e49bd4bSLewanczyk, Dawid // Copyright (c) 2018 Intel Corporation
3*4e49bd4bSLewanczyk, Dawid //
4*4e49bd4bSLewanczyk, Dawid // Licensed under the Apache License, Version 2.0 (the "License");
5*4e49bd4bSLewanczyk, Dawid // you may not use this file except in compliance with the License.
6*4e49bd4bSLewanczyk, Dawid // You may obtain a copy of the License at
7*4e49bd4bSLewanczyk, Dawid //
8*4e49bd4bSLewanczyk, Dawid //      http://www.apache.org/licenses/LICENSE-2.0
9*4e49bd4bSLewanczyk, Dawid //
10*4e49bd4bSLewanczyk, Dawid // Unless required by applicable law or agreed to in writing, software
11*4e49bd4bSLewanczyk, Dawid // distributed under the License is distributed on an "AS IS" BASIS,
12*4e49bd4bSLewanczyk, Dawid // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4e49bd4bSLewanczyk, Dawid // See the License for the specific language governing permissions and
14*4e49bd4bSLewanczyk, Dawid // limitations under the License.
15*4e49bd4bSLewanczyk, Dawid */
16*4e49bd4bSLewanczyk, Dawid #pragma once
17*4e49bd4bSLewanczyk, Dawid 
18*4e49bd4bSLewanczyk, Dawid #include <vector>
19*4e49bd4bSLewanczyk, Dawid #include "node.hpp"
20*4e49bd4bSLewanczyk, Dawid 
21*4e49bd4bSLewanczyk, Dawid namespace redfish {
22*4e49bd4bSLewanczyk, Dawid 
23*4e49bd4bSLewanczyk, Dawid class Roles : public Node {
24*4e49bd4bSLewanczyk, Dawid  public:
25*4e49bd4bSLewanczyk, Dawid   template <typename CrowApp, typename PrivilegeProvider>
26*4e49bd4bSLewanczyk, Dawid   Roles(CrowApp& app, PrivilegeProvider& provider)
27*4e49bd4bSLewanczyk, Dawid       : Node(app, provider, "#Role.v1_0_2.Role",
28*4e49bd4bSLewanczyk, Dawid              "/redfish/v1/AccountService/Roles/Administrator/") {
29*4e49bd4bSLewanczyk, Dawid     nodeJson["@odata.id"] = "/redfish/v1/AccountService/Roles/Administrator";
30*4e49bd4bSLewanczyk, Dawid     nodeJson["@odata.type"] = "#Role.v1_0_2.Role";
31*4e49bd4bSLewanczyk, Dawid     nodeJson["@odata.context"] = "/redfish/v1/$metadata#Role.Role";
32*4e49bd4bSLewanczyk, Dawid     nodeJson["Id"] = "Administrator";
33*4e49bd4bSLewanczyk, Dawid     nodeJson["Name"] = "User Role";
34*4e49bd4bSLewanczyk, Dawid     nodeJson["Description"] = "Administrator User Role";
35*4e49bd4bSLewanczyk, Dawid     nodeJson["IsPredefined"] = true;
36*4e49bd4bSLewanczyk, Dawid     nodeJson["AssignedPrivileges"] = {"Login", "ConfigureManager",
37*4e49bd4bSLewanczyk, Dawid                                       "ConfigureUsers", "ConfigureSelf",
38*4e49bd4bSLewanczyk, Dawid                                       "ConfigureComponents"};
39*4e49bd4bSLewanczyk, Dawid     nodeJson["OemPrivileges"] = nlohmann::json::array();
40*4e49bd4bSLewanczyk, Dawid   }
41*4e49bd4bSLewanczyk, Dawid 
42*4e49bd4bSLewanczyk, Dawid  private:
43*4e49bd4bSLewanczyk, Dawid   void doGet(crow::response& res, const crow::request& req,
44*4e49bd4bSLewanczyk, Dawid              const std::vector<std::string>& params) override {
45*4e49bd4bSLewanczyk, Dawid     res.json_value = nodeJson;
46*4e49bd4bSLewanczyk, Dawid     res.end();
47*4e49bd4bSLewanczyk, Dawid   }
48*4e49bd4bSLewanczyk, Dawid 
49*4e49bd4bSLewanczyk, Dawid   nlohmann::json nodeJson;
50*4e49bd4bSLewanczyk, Dawid };
51*4e49bd4bSLewanczyk, Dawid 
52*4e49bd4bSLewanczyk, Dawid class RoleCollection : public Node {
53*4e49bd4bSLewanczyk, Dawid  public:
54*4e49bd4bSLewanczyk, Dawid   template <typename CrowApp, typename PrivilegeProvider>
55*4e49bd4bSLewanczyk, Dawid   RoleCollection(CrowApp& app, PrivilegeProvider& provider)
56*4e49bd4bSLewanczyk, Dawid       : Node(app, provider, "#RoleCollection.RoleCollection",
57*4e49bd4bSLewanczyk, Dawid              "/redfish/v1/AccountService/Roles/") {
58*4e49bd4bSLewanczyk, Dawid     nodeJson["@odata.id"] = "/redfish/v1/AccountService/Roles";
59*4e49bd4bSLewanczyk, Dawid     nodeJson["@odata.type"] = "#RoleCollection.RoleCollection";
60*4e49bd4bSLewanczyk, Dawid     nodeJson["@odata.context"] =
61*4e49bd4bSLewanczyk, Dawid         "/redfish/v1/$metadata#RoleCollection.RoleCollection";
62*4e49bd4bSLewanczyk, Dawid     nodeJson["Name"] = "Roles Collection";
63*4e49bd4bSLewanczyk, Dawid     nodeJson["Description"] = "BMC User Roles";
64*4e49bd4bSLewanczyk, Dawid     nodeJson["Members@odata.count"] = 1;
65*4e49bd4bSLewanczyk, Dawid     nodeJson["Members"] = {
66*4e49bd4bSLewanczyk, Dawid         {"@odata.id", "/redfish/v1/AccountService/Roles/Administrator"}};
67*4e49bd4bSLewanczyk, Dawid   }
68*4e49bd4bSLewanczyk, Dawid 
69*4e49bd4bSLewanczyk, Dawid  private:
70*4e49bd4bSLewanczyk, Dawid   void doGet(crow::response& res, const crow::request& req,
71*4e49bd4bSLewanczyk, Dawid              const std::vector<std::string>& params) override {
72*4e49bd4bSLewanczyk, Dawid     res.json_value = nodeJson;
73*4e49bd4bSLewanczyk, Dawid     res.end();
74*4e49bd4bSLewanczyk, Dawid   }
75*4e49bd4bSLewanczyk, Dawid 
76*4e49bd4bSLewanczyk, Dawid   nlohmann::json nodeJson;
77*4e49bd4bSLewanczyk, Dawid };
78*4e49bd4bSLewanczyk, Dawid 
79*4e49bd4bSLewanczyk, Dawid }  // namespace redfish
80