diff options
Diffstat (limited to 'src/mongo/db/auth/privilege_parser.h')
-rw-r--r-- | src/mongo/db/auth/privilege_parser.h | 304 |
1 files changed, 152 insertions, 152 deletions
diff --git a/src/mongo/db/auth/privilege_parser.h b/src/mongo/db/auth/privilege_parser.h index aec390e3973..a48297c862f 100644 --- a/src/mongo/db/auth/privilege_parser.h +++ b/src/mongo/db/auth/privilege_parser.h @@ -37,160 +37,160 @@ namespace mongo { - class Privilege; +class Privilege; + +/** + * This class is used to parse documents describing resources as they are represented as part + * of privileges granted to roles in the role management commands. + */ +class ParsedResource : BSONSerializable { + MONGO_DISALLOW_COPYING(ParsedResource); + +public: + // + // schema declarations + // + + static const BSONField<bool> anyResource; + static const BSONField<bool> cluster; + static const BSONField<std::string> db; + static const BSONField<std::string> collection; + + // + // construction / destruction + // + + ParsedResource(); + ~ParsedResource(); + + /** Copies all the fields present in 'this' to 'other'. */ + void cloneTo(ParsedResource* other) const; + + // + // bson serializable interface implementation + // + + bool isValid(std::string* errMsg) const; + BSONObj toBSON() const; + bool parseBSON(const BSONObj& source, std::string* errMsg); + void clear(); + virtual std::string toString() const; + + // + // individual field accessors + // + + void setAnyResource(bool anyResource); + void unsetAnyResource(); + bool isAnyResourceSet() const; + bool getAnyResource() const; + + void setCluster(bool cluster); + void unsetCluster(); + bool isClusterSet() const; + bool getCluster() const; + + void setDb(StringData db); + void unsetDb(); + bool isDbSet() const; + const std::string& getDb() const; + + void setCollection(StringData collection); + void unsetCollection(); + bool isCollectionSet() const; + const std::string& getCollection() const; + +private: + // Convention: (M)andatory, (O)ptional + + // (O) Only present if the resource matches anything. + bool _anyResource; + bool _isAnyResourceSet; + + // (O) Only present if the resource is the cluster + bool _cluster; + bool _isClusterSet; + + // (O) database portion of the resource + std::string _db; + bool _isDbSet; + + // (O) collection portion of the resource + std::string _collection; + bool _isCollectionSet; +}; + +/** + * This class is used to parse documents describing privileges in the role managment commands. + */ +class ParsedPrivilege : BSONSerializable { + MONGO_DISALLOW_COPYING(ParsedPrivilege); + +public: + // + // schema declarations + // + + static const BSONField<std::vector<std::string>> actions; + static const BSONField<ParsedResource> resource; + + // + // construction / destruction + // + + ParsedPrivilege(); + ~ParsedPrivilege(); /** - * This class is used to parse documents describing resources as they are represented as part - * of privileges granted to roles in the role management commands. + * Takes a parsedPrivilege and turns it into a true Privilege object. */ - class ParsedResource : BSONSerializable { - MONGO_DISALLOW_COPYING(ParsedResource); - public: - - // - // schema declarations - // - - static const BSONField<bool> anyResource; - static const BSONField<bool> cluster; - static const BSONField<std::string> db; - static const BSONField<std::string> collection; - - // - // construction / destruction - // - - ParsedResource(); - ~ParsedResource(); - - /** Copies all the fields present in 'this' to 'other'. */ - void cloneTo(ParsedResource* other) const; - - // - // bson serializable interface implementation - // - - bool isValid(std::string* errMsg) const; - BSONObj toBSON() const; - bool parseBSON(const BSONObj& source, std::string* errMsg); - void clear(); - virtual std::string toString() const; - - // - // individual field accessors - // - - void setAnyResource(bool anyResource); - void unsetAnyResource(); - bool isAnyResourceSet() const; - bool getAnyResource() const; - - void setCluster(bool cluster); - void unsetCluster(); - bool isClusterSet() const; - bool getCluster() const; - - void setDb(StringData db); - void unsetDb(); - bool isDbSet() const; - const std::string& getDb() const; - - void setCollection(StringData collection); - void unsetCollection(); - bool isCollectionSet() const; - const std::string& getCollection() const; - - private: - // Convention: (M)andatory, (O)ptional - - // (O) Only present if the resource matches anything. - bool _anyResource; - bool _isAnyResourceSet; - - // (O) Only present if the resource is the cluster - bool _cluster; - bool _isClusterSet; - - // (O) database portion of the resource - std::string _db; - bool _isDbSet; - - // (O) collection portion of the resource - std::string _collection; - bool _isCollectionSet; - }; - + static bool parsedPrivilegeToPrivilege(const ParsedPrivilege& parsedPrivilege, + Privilege* result, + std::string* errmsg); /** - * This class is used to parse documents describing privileges in the role managment commands. + * Takes a Privilege object and turns it into a ParsedPrivilege. */ - class ParsedPrivilege : BSONSerializable { - MONGO_DISALLOW_COPYING(ParsedPrivilege); - public: - - // - // schema declarations - // - - static const BSONField<std::vector<std::string> > actions; - static const BSONField<ParsedResource> resource; - - // - // construction / destruction - // - - ParsedPrivilege(); - ~ParsedPrivilege(); - - /** - * Takes a parsedPrivilege and turns it into a true Privilege object. - */ - static bool parsedPrivilegeToPrivilege(const ParsedPrivilege& parsedPrivilege, - Privilege* result, - std::string* errmsg); - /** - * Takes a Privilege object and turns it into a ParsedPrivilege. - */ - static bool privilegeToParsedPrivilege(const Privilege& privilege, - ParsedPrivilege* result, - std::string* errmsg); - - // - // bson serializable interface implementation - // - - bool isValid(std::string* errMsg) const; - BSONObj toBSON() const; - bool parseBSON(const BSONObj& source, std::string* errMsg); - void clear(); - std::string toString() const; - - // - // individual field accessors - // - - void setActions(const std::vector<std::string>& actions); - void addToActions(const std::string& actions); - void unsetActions(); - bool isActionsSet() const; - size_t sizeActions() const; - const std::vector<std::string>& getActions() const; - const std::string& getActionsAt(size_t pos) const; - - void setResource(const ParsedResource& resource); - void unsetResource(); - bool isResourceSet() const; - const ParsedResource& getResource() const; - - private: - // Convention: (M)andatory, (O)ptional - - // (M) Array of action types - std::vector<std::string> _actions; - bool _isActionsSet; - - // (M) Object describing the resource pattern of this privilege - ParsedResource _resource; - bool _isResourceSet; - }; - -} // namespace mongo + static bool privilegeToParsedPrivilege(const Privilege& privilege, + ParsedPrivilege* result, + std::string* errmsg); + + // + // bson serializable interface implementation + // + + bool isValid(std::string* errMsg) const; + BSONObj toBSON() const; + bool parseBSON(const BSONObj& source, std::string* errMsg); + void clear(); + std::string toString() const; + + // + // individual field accessors + // + + void setActions(const std::vector<std::string>& actions); + void addToActions(const std::string& actions); + void unsetActions(); + bool isActionsSet() const; + size_t sizeActions() const; + const std::vector<std::string>& getActions() const; + const std::string& getActionsAt(size_t pos) const; + + void setResource(const ParsedResource& resource); + void unsetResource(); + bool isResourceSet() const; + const ParsedResource& getResource() const; + +private: + // Convention: (M)andatory, (O)ptional + + // (M) Array of action types + std::vector<std::string> _actions; + bool _isActionsSet; + + // (M) Object describing the resource pattern of this privilege + ParsedResource _resource; + bool _isResourceSet; +}; + +} // namespace mongo |