summaryrefslogtreecommitdiff
path: root/src/mongo/db/auth/privilege_parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/auth/privilege_parser.h')
-rw-r--r--src/mongo/db/auth/privilege_parser.h304
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