xref: /openbmc/bmcweb/redfish-core/include/privileges.hpp (revision b6df6dc7a1777e1063104012cf79f2aaa9dbe3f9)
1 /*
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 namespace redfish {
19 
20 /**
21  * @brief  Class used to store privileges for a given user.
22  */
23 class UserPrivileges {
24   // TODO: Temporary stub, implementation will come with next patch-sets
25  private:
26   uint32_t redfishPrivileges;
27   uint32_t oemPrivileges;
28 };
29 
30 /**
31  * @brief  Class used to store privileges for a given Redfish entity.
32  */
33 class EntityPrivileges {
34   // TODO: Temporary stub, implementation will come with next patch-sets
35  public:
36   bool isMethodAllowed(const crow::HTTPMethod& method,
37                        const std::string& username) const {
38     return true;
39   }
40 };
41 
42 /**
43  * @brief  Class used to:
44  *         -  read the PrivilegeRegistry file,
45  *         -  provide EntityPrivileges objects to callers.
46  *
47  *         To save runtime memory object of this class should
48  *         exist only for the time required to install all Nodes.
49  */
50 class PrivilegeProvider {
51   // TODO: Temporary stub, implementation will come with next patch-sets
52  public:
53   PrivilegeProvider() {
54     // load privilege_registry.json to memory
55   }
56 
57   EntityPrivileges getPrivileges(const std::string& entity_url,
58                                  const std::string& entity_type) const {
59     // return an entity privilege object based on the privilege_registry.json,
60     // currently returning default constructed object
61     return EntityPrivileges();
62   }
63 };
64 
65 }  // namespace redfish
66 
67