| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | #ifndef NETDATA_USER_AUTH_H |
| 4 | #define NETDATA_USER_AUTH_H |
| 5 | |
| 6 | #include "../libnetdata.h" |
| 7 | #include "../template-enum.h" |
| 8 | |
| 9 | #define CLOUD_CLIENT_NAME_LENGTH 64 |
| 10 | |
| 11 | typedef enum auth_type { |
| 12 | USER_AUTH_METHOD_NONE = 0, |
| 13 | USER_AUTH_METHOD_CLOUD, |
| 14 | USER_AUTH_METHOD_BEARER, |
| 15 | USER_AUTH_METHOD_GOD, |
| 16 | } USER_AUTH_METHOD; |
| 17 | |
| 18 | typedef struct user_auth { |
| 19 | char client_ip[INET6_ADDRSTRLEN]; |
| 20 | char forwarded_for[INET6_ADDRSTRLEN]; |
| 21 | char client_name[CLOUD_CLIENT_NAME_LENGTH]; |
| 22 | ND_UUID cloud_account_id; |
| 23 | USER_AUTH_METHOD method; |
| 24 | HTTP_USER_ROLE user_role; |
| 25 | HTTP_ACCESS access; |
| 26 | } USER_AUTH; |
| 27 | |
| 28 | // Declare the enum-to-string conversion functions |
| 29 | ENUM_STR_DEFINE_FUNCTIONS_EXTERN(USER_AUTH_METHOD) |
| 30 | |
| 31 | bool user_auth_from_source(const char *src, USER_AUTH *parsed); |
| 32 | |
| 33 | bool user_auth_source_is_cloud(const char *source); |
| 34 | |
| 35 | void user_auth_to_source_buffer(USER_AUTH *user_auth, BUFFER *source); |
| 36 | |
| 37 | #endif //NETDATA_USER_AUTH_H |