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