Remoto - VFS: VFS_acl.h Source File
Remoto - VFS
VFS_acl.h
Go to the documentation of this file.
1 #ifndef VFS_ACL_H
2 #define VFS_ACL_H
3 
4 #include "VFS_base/VFS_node.h"
5 
6 class VFS_acl : public VFS_node
7 {
8  Q_OBJECT
9 
10  public:
11  Q_INVOKABLE explicit VFS_acl(QString vfspath, QString path, bool defaultAllow=true, QString superadmin="");
12  virtual ~VFS_acl();
13 
14  virtual bool isContainer();
15  virtual VFS_node *find(VFS_request *r);
16 
17  virtual QString reportDetails();
18 
19  static bool checkAllowAccess(VFS_session *s, QString path, QString feature="");
20  static bool checkAllowAccess(VFS_request *r, QString feature="");
21  static QStringList fetchACLPaths();
22 
23  protected:
24 
25  private:
26  virtual void subscribe(VFS_request *r);
27  virtual void unsubscribe(VFS_request *r);
28 
29  virtual void read(VFS_request *r);
30  //virtual void write(VFS_request *r);
31  //virtual void metadata(VFS_request *r);
32  //virtual void report(VFS_request *r);
33  virtual void submit(VFS_request *r);
34  //virtual void rm(VFS_request *r);
35  //virtual void ls(VFS_request *r);
36 
37  //virtual QByteArray icon();
38 
39  QString _vfspath;
40  QString _path;
42  QJsonObject _accessControlList;
43  QString _superadmin;
44  bool _initialized;
45 
46  static QMutex _accessControlLock;
47  static QList<VFS_acl *> _accessControlLists;
48 
49  static void registerACL(VFS_acl *acl);
50  static void unregisterACL(VFS_acl *acl);
51 
52  bool privateCheckAllowAccess(VFS_session *s, QString path, QString feature, bool &wasDefault);
53 
54  public slots:
55  //virtual void applyDiff(VFS_request *r);
56  virtual void receiveResponse(VFS_request *r);
57 
58  protected slots:
59  virtual void initialize();
60 };
61 
62 #endif //VFS_ACL_H
The ACL class for maintaining permission to nodes.
Definition: VFS_acl.h:7
bool _defaultAllow
The default value if an entry is not found.
Definition: VFS_acl.h:41
static QList< VFS_acl * > _accessControlLists
The ACLs that have been registered to the VFS.
Definition: VFS_acl.h:47
static QMutex _accessControlLock
A mutex used to modify the _accessControlFeatures.
Definition: VFS_acl.h:46
virtual void unsubscribe(VFS_request *r)
Perform a normal VFS_node::unsubscribe, unless the path is "browse".
Definition: VFS_acl.cpp:326
virtual void read(VFS_request *r)
Read the ACL entries.
Definition: VFS_acl.cpp:191
QString _vfspath
The VFS path of this node.
Definition: VFS_acl.h:39
bool privateCheckAllowAccess(VFS_session *s, QString path, QString feature, bool &wasDefault)
Check if a request has access to a resource.
Definition: VFS_acl.cpp:465
virtual void submit(VFS_request *r)
Submit features or settings to the ACL.
Definition: VFS_acl.cpp:226
QString _superadmin
A single user who these ACLs will not apply to regardless of ACL file.
Definition: VFS_acl.h:43
virtual void initialize()
Initialize the ACL by subscribing to its data file.
Definition: VFS_acl.cpp:134
static bool checkAllowAccess(VFS_session *s, QString path, QString feature="")
Check if a session has access to a resource.
Definition: VFS_acl.cpp:407
virtual bool isContainer()
VFS_acl nodes cannot contain children.
Definition: VFS_acl.cpp:162
Q_INVOKABLE VFS_acl(QString vfspath, QString path, bool defaultAllow=true, QString superadmin="")
Construct a VFS_acl object.
Definition: VFS_acl.cpp:112
virtual void receiveResponse(VFS_request *r)
A request has been completed, respond to the results.
Definition: VFS_acl.cpp:348
virtual QString reportDetails()
Report data about an ACL.
Definition: VFS_acl.cpp:147
virtual ~VFS_acl()
Definition: VFS_acl.cpp:125
virtual void subscribe(VFS_request *r)
Perform a normal VFS_node::subscribe, unless the path is "browse".
Definition: VFS_acl.cpp:304
bool _initialized
Whether or not the settings file has been loaded.
Definition: VFS_acl.h:44
static void registerACL(VFS_acl *acl)
Add an acl to the _accessControlLists list.
Definition: VFS_acl.cpp:573
static QStringList fetchACLPaths()
Fetch the VFS path to each registered ACL file.
Definition: VFS_acl.cpp:597
QString _path
The VFS path to an ACL settings file.
Definition: VFS_acl.h:40
QJsonObject _accessControlList
The ACL entries.
Definition: VFS_acl.h:42
virtual VFS_node * find(VFS_request *r)
Find a child based on a VFS_request::_path.
Definition: VFS_acl.cpp:176
static void unregisterACL(VFS_acl *acl)
Remove an acl from the _accessControlLists list.
Definition: VFS_acl.cpp:585
VFS_node is the base class from which all other VFS_node classes derive.
Definition: VFS_node.h:143
The base class for all requests between nodes.
Definition: VFS_node.h:54
The VFS_session object represents a single session.
Definition: VFS_session.h:14