2022-06-25 01:55:54 +02:00
|
|
|
#ifndef WEB_PERMISSION_H
|
|
|
|
#define WEB_PERMISSION_H
|
|
|
|
|
2022-06-26 17:23:40 +02:00
|
|
|
#include "core/ustring.h"
|
2022-08-17 13:17:12 +02:00
|
|
|
#include "core/variant/variant.h"
|
2022-06-25 01:55:54 +02:00
|
|
|
|
2022-08-17 13:45:14 +02:00
|
|
|
#include "core/object/reference.h"
|
2022-06-25 01:55:54 +02:00
|
|
|
|
2022-06-26 17:23:40 +02:00
|
|
|
class WebServerRequest;
|
2022-06-25 01:55:54 +02:00
|
|
|
|
|
|
|
class WebPermission : public Reference {
|
2022-06-26 17:23:40 +02:00
|
|
|
GDCLASS(WebPermission, Reference);
|
2022-06-25 01:55:54 +02:00
|
|
|
|
|
|
|
public:
|
|
|
|
enum WebPermissions {
|
|
|
|
WEB_PERMISSION_VIEW = 1 << 0,
|
|
|
|
WEB_PERMISSION_CREATE = 1 << 1,
|
|
|
|
WEB_PERMISSION_EDIT = 1 << 2,
|
|
|
|
WEB_PERMISSION_DELETE = 1 << 3,
|
|
|
|
|
|
|
|
WEB_PERMISSION_ALL = WEB_PERMISSION_VIEW | WEB_PERMISSION_CREATE | WEB_PERMISSION_EDIT | WEB_PERMISSION_DELETE,
|
|
|
|
WEB_PERMISSION_NONE = 0,
|
|
|
|
};
|
|
|
|
|
|
|
|
//like in middlewate returns whether it handled the request or not
|
2022-06-26 17:23:40 +02:00
|
|
|
bool activate(const Ref<WebServerRequest> &request);
|
|
|
|
int get_permissions(const Ref<WebServerRequest> &request);
|
|
|
|
void handle_view_permission_missing(const Ref<WebServerRequest> &request);
|
|
|
|
|
|
|
|
virtual bool _activate(Ref<WebServerRequest> request);
|
|
|
|
virtual int _get_permissions(Ref<WebServerRequest> request);
|
|
|
|
virtual void _handle_view_permission_missing(Ref<WebServerRequest> request);
|
2022-06-25 01:55:54 +02:00
|
|
|
|
|
|
|
WebPermission();
|
|
|
|
~WebPermission();
|
2022-06-26 17:23:40 +02:00
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
2022-06-25 01:55:54 +02:00
|
|
|
};
|
|
|
|
|
2022-06-26 17:23:40 +02:00
|
|
|
VARIANT_ENUM_CAST(WebPermission::WebPermissions);
|
|
|
|
|
|
|
|
#endif
|