2012-01-03 00:17:20 +04:00
/* -------------------------------------------------------------------------- */
2019-01-16 13:27:59 +03:00
/* Copyright 2002-2019, OpenNebula Project, OpenNebula Systems */
2012-01-03 00:17:20 +04:00
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); you may */
/* not use this file except in compliance with the License. You may obtain */
/* a copy of the License at */
/* */
/* http://www.apache.org/licenses/LICENSE-2.0 */
/* */
/* Unless required by applicable law or agreed to in writing, software */
/* distributed under the License is distributed on an "AS IS" BASIS, */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
/* See the License for the specific language governing permissions and */
/* limitations under the License. */
/* -------------------------------------------------------------------------- */
# ifndef POOL_OBJECT_AUTH_H_
# define POOL_OBJECT_AUTH_H_
# include "PoolObjectSQL.h"
2012-01-03 05:58:23 +04:00
class AclRule ;
/**
* This class abstracts the authorization attributes of a PoolObject . It is
* used to check permissions and access rights of requests
*/
2012-01-03 00:17:20 +04:00
class PoolObjectAuth
{
public :
2012-01-03 05:58:23 +04:00
/* ------------------- Constructor and Methods -------------------------- */
2012-01-03 00:17:20 +04:00
PoolObjectAuth ( ) :
oid ( - 1 ) ,
uid ( - 1 ) ,
gid ( - 1 ) ,
owner_u ( 1 ) ,
owner_m ( 1 ) ,
owner_a ( 0 ) ,
group_u ( 0 ) ,
group_m ( 0 ) ,
group_a ( 0 ) ,
other_u ( 0 ) ,
other_m ( 0 ) ,
2014-09-17 19:05:01 +04:00
other_a ( 0 ) ,
disable_all_acl ( false ) ,
disable_cluster_acl ( false ) ,
2018-01-24 17:33:12 +03:00
disable_group_acl ( false ) ,
locked ( 0 ) { } ;
2012-01-03 00:17:20 +04:00
2012-01-03 05:58:23 +04:00
void get_acl_rules ( AclRule & owner_rule ,
AclRule & group_rule ,
2014-01-25 23:41:13 +04:00
AclRule & other_rule ,
int zone_id ) const ;
2012-01-03 00:17:20 +04:00
2012-01-03 05:58:23 +04:00
string type_to_str ( ) const
{
2014-01-25 23:41:13 +04:00
return PoolObjectSQL : : type_to_str ( obj_type ) ;
2012-01-03 00:17:20 +04:00
} ;
2012-01-03 05:58:23 +04:00
/* --------------------------- Attributes ------------------------------- */
PoolObjectSQL : : ObjectType obj_type ;
2012-01-03 00:17:20 +04:00
int oid ;
int uid ;
int gid ;
2016-03-11 17:42:17 +03:00
set < int > cids ;
2012-01-03 00:17:20 +04:00
int owner_u ;
int owner_m ;
int owner_a ;
int group_u ;
int group_m ;
int group_a ;
int other_u ;
int other_m ;
int other_a ;
2014-09-17 19:05:01 +04:00
bool disable_all_acl ; // All objects of this type (e.g. NET/*)
bool disable_cluster_acl ; // All objects in a cluster (e.g. NET/%100)
bool disable_group_acl ; // All objects own by this group (e.g. NET/@101)
2018-01-24 17:33:12 +03:00
int locked ;
2012-01-03 00:17:20 +04:00
} ;
# endif /*POOL_OBJECT_AUTH_H_*/