blob: 72d79486bbedd8b7756689faa2e3200257cf28e3 [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
Lewanczyk, Dawid4e49bd42018-01-25 11:30:19 +010018#include "node.hpp"
19
20namespace redfish {
21
22class Roles : public Node {
23 public:
Borawski.Lukasz43a095a2018-02-19 15:39:01 +010024 Roles(CrowApp& app)
Ed Tanous3ebd75f2018-03-05 18:20:01 -080025 : Node(app, "/redfish/v1/AccountService/Roles/Administrator/") {
Borawski.Lukaszc1a46bd2018-02-08 13:31:59 +010026 Node::json["@odata.id"] = "/redfish/v1/AccountService/Roles/Administrator";
27 Node::json["@odata.type"] = "#Role.v1_0_2.Role";
28 Node::json["@odata.context"] = "/redfish/v1/$metadata#Role.Role";
29 Node::json["Id"] = "Administrator";
30 Node::json["Name"] = "User Role";
31 Node::json["Description"] = "Administrator User Role";
32 Node::json["IsPredefined"] = true;
33 Node::json["AssignedPrivileges"] = {"Login", "ConfigureManager",
34 "ConfigureUsers", "ConfigureSelf",
35 "ConfigureComponents"};
36 Node::json["OemPrivileges"] = nlohmann::json::array();
Ed Tanous55c7b7a2018-05-22 15:27:24 -070037 entityPrivileges = {
38 {boost::beast::http::verb::get, {{"Login"}}},
39 {boost::beast::http::verb::head, {{"Login"}}},
40 {boost::beast::http::verb::patch, {{"ConfigureManager"}}},
41 {boost::beast::http::verb::put, {{"ConfigureManager"}}},
42 {boost::beast::http::verb::delete_, {{"ConfigureManager"}}},
43 {boost::beast::http::verb::post, {{"ConfigureManager"}}}};
Lewanczyk, Dawid4e49bd42018-01-25 11:30:19 +010044 }
45
46 private:
Ed Tanous55c7b7a2018-05-22 15:27:24 -070047 void doGet(crow::Response& res, const crow::Request& req,
Lewanczyk, Dawid4e49bd42018-01-25 11:30:19 +010048 const std::vector<std::string>& params) override {
Ed Tanous55c7b7a2018-05-22 15:27:24 -070049 res.jsonValue = Node::json;
Lewanczyk, Dawid4e49bd42018-01-25 11:30:19 +010050 res.end();
51 }
Lewanczyk, Dawid4e49bd42018-01-25 11:30:19 +010052};
53
54class RoleCollection : public Node {
55 public:
Borawski.Lukasz43a095a2018-02-19 15:39:01 +010056 RoleCollection(CrowApp& app)
Ed Tanous3ebd75f2018-03-05 18:20:01 -080057 : Node(app, "/redfish/v1/AccountService/Roles/") {
Borawski.Lukaszc1a46bd2018-02-08 13:31:59 +010058 Node::json["@odata.id"] = "/redfish/v1/AccountService/Roles";
59 Node::json["@odata.type"] = "#RoleCollection.RoleCollection";
60 Node::json["@odata.context"] =
Lewanczyk, Dawid4e49bd42018-01-25 11:30:19 +010061 "/redfish/v1/$metadata#RoleCollection.RoleCollection";
Borawski.Lukaszc1a46bd2018-02-08 13:31:59 +010062 Node::json["Name"] = "Roles Collection";
63 Node::json["Description"] = "BMC User Roles";
64 Node::json["Members@odata.count"] = 1;
65 Node::json["Members"] = {
Ed Tanous6c233012018-03-15 14:43:56 -070066 {{"@odata.id", "/redfish/v1/AccountService/Roles/Administrator"}}};
Ed Tanous3ebd75f2018-03-05 18:20:01 -080067
Ed Tanous55c7b7a2018-05-22 15:27:24 -070068 entityPrivileges = {
69 {boost::beast::http::verb::get, {{"Login"}}},
70 {boost::beast::http::verb::head, {{"Login"}}},
71 {boost::beast::http::verb::patch, {{"ConfigureManager"}}},
72 {boost::beast::http::verb::put, {{"ConfigureManager"}}},
73 {boost::beast::http::verb::delete_, {{"ConfigureManager"}}},
74 {boost::beast::http::verb::post, {{"ConfigureManager"}}}};
Lewanczyk, Dawid4e49bd42018-01-25 11:30:19 +010075 }
76
77 private:
Ed Tanous55c7b7a2018-05-22 15:27:24 -070078 void doGet(crow::Response& res, const crow::Request& req,
Lewanczyk, Dawid4e49bd42018-01-25 11:30:19 +010079 const std::vector<std::string>& params) override {
Ed Tanous55c7b7a2018-05-22 15:27:24 -070080 res.jsonValue = Node::json;
Ed Tanous6c233012018-03-15 14:43:56 -070081 // This is a short term solution to work around a bug. GetSubroutes
82 // accidentally recognizes the Roles/Administrator route as a subroute
83 // (because it's hardcoded to a single entity). Remove this line when that
84 // is resolved
Ed Tanous55c7b7a2018-05-22 15:27:24 -070085 res.jsonValue.erase("Administrator");
Lewanczyk, Dawid4e49bd42018-01-25 11:30:19 +010086 res.end();
87 }
Lewanczyk, Dawid4e49bd42018-01-25 11:30:19 +010088};
89
90} // namespace redfish