mirror of
https://github.com/fluencelabs/redis
synced 2025-03-20 01:20:50 +00:00
ACL: improved version of the user structure.
This commit is contained in:
parent
45ff9f33d6
commit
4729f71495
19
src/server.h
19
src/server.h
@ -1356,8 +1356,27 @@ typedef struct {
|
||||
* user is associated to the connection after the connection is authenticated.
|
||||
* If there is no associated user, the connection uses the default user. */
|
||||
#define USER_MAX_COMMAND_BIT 1024
|
||||
#define USER_FLAG_ENABLED (1<<0) /* The user is active. */
|
||||
typedef struct user {
|
||||
uint64_t flags; /* See USER_FLAG_* */
|
||||
|
||||
/* The bit in allowed_commands is set if this user has the right to
|
||||
* execute this command. In commands having subcommands, if this bit is
|
||||
* set, then all the subcommands are also available.
|
||||
*
|
||||
* If the bit for a given command is NOT set and the command has
|
||||
* subcommands, Redis will also check allowed_subcommands in order to
|
||||
* understand if the command can be executed. */
|
||||
uint64_t allowed_commands[USER_MAX_COMMAND_BIT/64];
|
||||
|
||||
/* This array points, for each command ID (corresponding to the command
|
||||
* bit set in allowed_commands), to an array of SDS strings, terminated by
|
||||
* a NULL pointer, with all the sub commands that can be executed for
|
||||
* this command. When no subcommands matching is used, the field is just
|
||||
* set to NULL to avoid allocating USER_MAX_COMMAND_BIT pointers. */
|
||||
sds **allowed_subcommands;
|
||||
list *passwords; /* A list of SDS valid passwords for this user. */
|
||||
list *patterns; /* A list of allowed key patterns. */
|
||||
} user;
|
||||
|
||||
/* Structure to hold hash iteration abstraction. Note that iteration over
|
||||
|
Loading…
x
Reference in New Issue
Block a user