Csilk 0.2.1
A lightweight, high-performance C HTTP web framework
Loading...
Searching...
No Matches
perm.h
Go to the documentation of this file.
1
17#ifndef CSILK_PERM_H
18#define CSILK_PERM_H
19
21typedef struct csilk_ctx_s csilk_ctx_t;
22
33 const char* name;
40 int (*check)(csilk_ctx_t* c, const char* permission, const char* resource);
41};
42
43typedef struct csilk_perm_driver_s csilk_perm_driver_t;
44
51typedef struct {
52 const char* role;
53 const char* permission;
54 const char* resource;
56
60void csilk_perm_init(void);
61
67int csilk_perm_register_driver(const char* name, csilk_perm_driver_t* driver);
68
72csilk_perm_driver_t* csilk_perm_get_driver(const char* name);
73
77int csilk_perm_set_default(const char* name);
78
84int csilk_perm_check(csilk_ctx_t* c, const char* permission, const char* resource);
85
91void csilk_perm_require(csilk_ctx_t* c, const char* permission, const char* resource);
92
95void csilk_perm_simple_init(void);
96
102int csilk_perm_simple_allow(const char* role, const char* permission, const char* resource);
103
106void csilk_perm_simple_clear(void);
107
113void csilk_perm_auto_middleware(csilk_ctx_t* c);
114
115#endif
void csilk_perm_require(csilk_ctx_t *c, const char *permission, const char *resource)
Abort the handler chain with 403 Forbidden if the check fails. Convenience wrapper: calls csilk_perm_...
Definition perm.c:127
csilk_perm_driver_t * csilk_perm_get_driver(const char *name)
Look up a registered driver by name.
Definition perm.c:75
int csilk_perm_register_driver(const char *name, csilk_perm_driver_t *driver)
Register a permission driver implementation.
Definition perm.c:55
const char * resource
Definition perm.h:54
void csilk_perm_simple_clear(void)
Remove all rules from the simple driver. After calling this, all checks will deny until new rules are...
Definition perm_simple.c:175
void csilk_perm_simple_init(void)
Initialise the built-in in-memory RBAC driver. Registers as "simple". Must be called before any simpl...
Definition perm_simple.c:143
int csilk_perm_set_default(const char *name)
Set the default permission driver used by csilk_perm_check.
Definition perm.c:93
const char * permission
Definition perm.h:53
const char * role
Definition perm.h:52
int csilk_perm_check(csilk_ctx_t *c, const char *permission, const char *resource)
Check the current request against the default permission driver.
Definition perm.c:111
int csilk_perm_simple_allow(const char *role, const char *permission, const char *resource)
Grant a permission on a resource to a role.
Definition perm_simple.c:158
void csilk_perm_auto_middleware(csilk_ctx_t *c)
Automatic permission-check middleware. Looks up the permission and resource from the route's metadata...
Definition perm.c:147
void csilk_perm_init(void)
Initialise the permission subsystem. Safe to call multiple times. Must be called before any driver op...
Definition perm.c:40
A single permission rule for the built-in RBAC driver.
Definition perm.h:51
Main Request Context — holds all state for the current HTTP request/response cycle.
Definition context_internal.h:107
Virtual function table for a permission/ACL driver.
Definition perm.h:32
const char * name
Definition perm.h:33
int(* check)(csilk_ctx_t *c, const char *permission, const char *resource)
Evaluate whether the request is allowed.
Definition perm.h:40