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 22*43a095abSBorawski.Lukasz static OperationMap accountServiceOpMap = { 23*43a095abSBorawski.Lukasz {crow::HTTPMethod::GET, {{"ConfigureUsers"}, {"ConfigureManager"}}}, 24*43a095abSBorawski.Lukasz {crow::HTTPMethod::HEAD, {{"Login"}}}, 25*43a095abSBorawski.Lukasz {crow::HTTPMethod::PATCH, {{"ConfigureUsers"}}}, 26*43a095abSBorawski.Lukasz {crow::HTTPMethod::PUT, {{"ConfigureUsers"}}}, 27*43a095abSBorawski.Lukasz {crow::HTTPMethod::DELETE, {{"ConfigureUsers"}}}, 28*43a095abSBorawski.Lukasz {crow::HTTPMethod::POST, {{"ConfigureUsers"}}}}; 29*43a095abSBorawski.Lukasz 3088d16c9aSLewanczyk, Dawid class AccountService : public Node { 3188d16c9aSLewanczyk, Dawid public: 32*43a095abSBorawski.Lukasz template <typename CrowApp> 33*43a095abSBorawski.Lukasz AccountService(CrowApp& app) 34*43a095abSBorawski.Lukasz : Node(app, EntityPrivileges(std::move(accountServiceOpMap)), 3588d16c9aSLewanczyk, Dawid "/redfish/v1/AccountService/") { 3688d16c9aSLewanczyk, Dawid nodeJson["@odata.id"] = "/redfish/v1/AccountService"; 3788d16c9aSLewanczyk, Dawid nodeJson["@odata.type"] = "#AccountService.v1_1_0.AccountService"; 3888d16c9aSLewanczyk, Dawid nodeJson["@odata.context"] = 3988d16c9aSLewanczyk, Dawid "/redfish/v1/$metadata#AccountService.AccountService"; 4088d16c9aSLewanczyk, Dawid nodeJson["Id"] = "AccountService"; 4188d16c9aSLewanczyk, Dawid nodeJson["Description"] = "BMC User Accounts"; 4288d16c9aSLewanczyk, Dawid nodeJson["Name"] = "Account Service"; 4388d16c9aSLewanczyk, Dawid nodeJson["Status"]["State"] = "Enabled"; 4488d16c9aSLewanczyk, Dawid nodeJson["Status"]["Health"] = "OK"; 4588d16c9aSLewanczyk, Dawid nodeJson["Status"]["HealthRollup"] = "OK"; 4688d16c9aSLewanczyk, Dawid nodeJson["ServiceEnabled"] = true; 4788d16c9aSLewanczyk, Dawid nodeJson["MinPasswordLength"] = 1; 4888d16c9aSLewanczyk, Dawid nodeJson["MaxPasswordLength"] = 20; 4988d16c9aSLewanczyk, Dawid nodeJson["Accounts"]["@odata.id"] = "/redfish/v1/AccountService/Accounts"; 5088d16c9aSLewanczyk, Dawid nodeJson["Roles"]["@odata.id"] = "/redfish/v1/AccountService/Roles"; 5188d16c9aSLewanczyk, Dawid } 5288d16c9aSLewanczyk, Dawid 5388d16c9aSLewanczyk, Dawid private: 5488d16c9aSLewanczyk, Dawid void doGet(crow::response& res, const crow::request& req, 5588d16c9aSLewanczyk, Dawid const std::vector<std::string>& params) override { 5688d16c9aSLewanczyk, Dawid res.json_value = nodeJson; 5788d16c9aSLewanczyk, Dawid res.end(); 5888d16c9aSLewanczyk, Dawid } 5988d16c9aSLewanczyk, Dawid 6088d16c9aSLewanczyk, Dawid nlohmann::json nodeJson; 6188d16c9aSLewanczyk, Dawid }; 6288d16c9aSLewanczyk, Dawid 6388d16c9aSLewanczyk, Dawid } // namespace redfish 64