xref: /openbmc/bmcweb/features/redfish/include/privileges.hpp (revision 86e1b661547fda86c7b92e6e23a50a10d8c9ebd4)
1*86e1b661SBorawski.Lukasz /*
2*86e1b661SBorawski.Lukasz // Copyright (c) 2018 Intel Corporation
3*86e1b661SBorawski.Lukasz //
4*86e1b661SBorawski.Lukasz // Licensed under the Apache License, Version 2.0 (the "License");
5*86e1b661SBorawski.Lukasz // you may not use this file except in compliance with the License.
6*86e1b661SBorawski.Lukasz // You may obtain a copy of the License at
7*86e1b661SBorawski.Lukasz //
8*86e1b661SBorawski.Lukasz //      http://www.apache.org/licenses/LICENSE-2.0
9*86e1b661SBorawski.Lukasz //
10*86e1b661SBorawski.Lukasz // Unless required by applicable law or agreed to in writing, software
11*86e1b661SBorawski.Lukasz // distributed under the License is distributed on an "AS IS" BASIS,
12*86e1b661SBorawski.Lukasz // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*86e1b661SBorawski.Lukasz // See the License for the specific language governing permissions and
14*86e1b661SBorawski.Lukasz // limitations under the License.
15*86e1b661SBorawski.Lukasz */
16*86e1b661SBorawski.Lukasz #pragma once
17*86e1b661SBorawski.Lukasz 
18*86e1b661SBorawski.Lukasz namespace redfish {
19*86e1b661SBorawski.Lukasz 
20*86e1b661SBorawski.Lukasz /**
21*86e1b661SBorawski.Lukasz  * @brief  Class used to store privileges for a given user.
22*86e1b661SBorawski.Lukasz  */
23*86e1b661SBorawski.Lukasz class UserPrivileges {
24*86e1b661SBorawski.Lukasz   // TODO: Temporary stub, implementation will come with next patch-sets
25*86e1b661SBorawski.Lukasz  private:
26*86e1b661SBorawski.Lukasz   uint32_t redfishPrivileges;
27*86e1b661SBorawski.Lukasz   uint32_t oemPrivileges;
28*86e1b661SBorawski.Lukasz };
29*86e1b661SBorawski.Lukasz 
30*86e1b661SBorawski.Lukasz /**
31*86e1b661SBorawski.Lukasz  * @brief  Class used to store privileges for a given Redfish entity.
32*86e1b661SBorawski.Lukasz  */
33*86e1b661SBorawski.Lukasz class EntityPrivileges {
34*86e1b661SBorawski.Lukasz   // TODO: Temporary stub, implementation will come with next patch-sets
35*86e1b661SBorawski.Lukasz  public:
36*86e1b661SBorawski.Lukasz   bool isMethodAllowed(const crow::HTTPMethod& method,
37*86e1b661SBorawski.Lukasz                        const std::string& username) const {
38*86e1b661SBorawski.Lukasz     return true;
39*86e1b661SBorawski.Lukasz   }
40*86e1b661SBorawski.Lukasz };
41*86e1b661SBorawski.Lukasz 
42*86e1b661SBorawski.Lukasz /**
43*86e1b661SBorawski.Lukasz  * @brief  Class used to:
44*86e1b661SBorawski.Lukasz  *         -  read the PrivilegeRegistry file,
45*86e1b661SBorawski.Lukasz  *         -  provide EntityPrivileges objects to callers.
46*86e1b661SBorawski.Lukasz  *
47*86e1b661SBorawski.Lukasz  *         To save runtime memory object of this class should
48*86e1b661SBorawski.Lukasz  *         exist only for the time required to install all Nodes.
49*86e1b661SBorawski.Lukasz  */
50*86e1b661SBorawski.Lukasz class PrivilegeProvider {
51*86e1b661SBorawski.Lukasz   // TODO: Temporary stub, implementation will come with next patch-sets
52*86e1b661SBorawski.Lukasz  public:
53*86e1b661SBorawski.Lukasz   PrivilegeProvider() {
54*86e1b661SBorawski.Lukasz     // load privilege_registry.json to memory
55*86e1b661SBorawski.Lukasz   }
56*86e1b661SBorawski.Lukasz 
57*86e1b661SBorawski.Lukasz   EntityPrivileges getPrivileges(const std::string &entity_url,
58*86e1b661SBorawski.Lukasz                                  const std::string &entity_type) const {
59*86e1b661SBorawski.Lukasz     // return an entity privilege object based on the privilege_registry.json,
60*86e1b661SBorawski.Lukasz     // currently returning default constructed object
61*86e1b661SBorawski.Lukasz     return EntityPrivileges();
62*86e1b661SBorawski.Lukasz   }
63*86e1b661SBorawski.Lukasz };
64*86e1b661SBorawski.Lukasz 
65*86e1b661SBorawski.Lukasz }  // namespace redfish
66*86e1b661SBorawski.Lukasz 
67