mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-31 13:00:49 +00:00
Change dash auth signature
This commit is contained in:
1 parent
e923b413ae
commit
73037880e6
7 files changed
+19
-12
No files matched your search
@@ -267,11 +267,17 @@ To enable user authentication, set `authenticate` function for the dashboard des
|
||||
```c
|
||||
static struct mg_dash s_dash;
|
||||
|
||||
static int authenticate(const char *user, const char *pass) {
|
||||
// Signature: (char *user, size_t userlen, const char *pass)
|
||||
// `user` is both input (username from the login form) and output: the function
|
||||
// may overwrite it with the canonical username. Return access level > 0 on
|
||||
// success, 0 on failure.
|
||||
static int authenticate(char *user, size_t userlen, const char *pass) {
|
||||
int level = 0; // Authentication failure
|
||||
if (strcmp(pass, "admin") == 0 && strcmp(user, "admin") == 0) {
|
||||
if (strcmp(pass, "admin") == 0) {
|
||||
mg_snprintf(user, userlen, "%s", "admin");
|
||||
level = 7; // Administrator
|
||||
} else if (strcmp(pass, "user") == 0 && strcmp(user, "user") == 0) {
|
||||
} else if (strcmp(pass, "user") == 0) {
|
||||
mg_snprintf(user, userlen, "%s", "user");
|
||||
level = 3; // Ordinary dude
|
||||
}
|
||||
return level;
|
||||
|
||||
+1
-1
@@ -1013,7 +1013,7 @@ static struct mg_dash_user *mg_dash_authenticate(struct mg_http_message *hm,
|
||||
struct mg_str *ah = mg_http_get_header(hm, "Authorization");
|
||||
if (ah != NULL) {
|
||||
// Auth header and password are set, auth by user/password via glue API
|
||||
int num_users = 0, level = dash->authenticate(user, pass);
|
||||
int num_users = 0, level = dash->authenticate(user, sizeof(user), pass);
|
||||
MG_DEBUG(("user %s, level: %d", user, level));
|
||||
if (level > 0) { // Proceed only if the firmware authenticated us
|
||||
for (u = s_users; u != NULL && result == NULL;
|
||||
|
||||
+1
-1
@@ -3318,7 +3318,7 @@ struct mg_dash_file {
|
||||
struct mg_dash {
|
||||
struct mg_field_set *sets;
|
||||
struct mg_dash_custom_handler *custom_handlers;
|
||||
int (*authenticate)(const char *user, const char *pass);
|
||||
int (*authenticate)(char *user, size_t userlen, const char *pass);
|
||||
int session_auto_expiration_seconds;
|
||||
//struct mg_dash_file *files;
|
||||
};
|
||||
|
||||
+1
-1
@@ -354,7 +354,7 @@ static struct mg_dash_user *mg_dash_authenticate(struct mg_http_message *hm,
|
||||
struct mg_str *ah = mg_http_get_header(hm, "Authorization");
|
||||
if (ah != NULL) {
|
||||
// Auth header and password are set, auth by user/password via glue API
|
||||
int num_users = 0, level = dash->authenticate(user, pass);
|
||||
int num_users = 0, level = dash->authenticate(user, sizeof(user), pass);
|
||||
MG_DEBUG(("user %s, level: %d", user, level));
|
||||
if (level > 0) { // Proceed only if the firmware authenticated us
|
||||
for (u = s_users; u != NULL && result == NULL;
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ struct mg_dash_file {
|
||||
struct mg_dash {
|
||||
struct mg_field_set *sets;
|
||||
struct mg_dash_custom_handler *custom_handlers;
|
||||
int (*authenticate)(const char *user, const char *pass);
|
||||
int (*authenticate)(char *user, size_t userlen, const char *pass);
|
||||
int session_auto_expiration_seconds;
|
||||
//struct mg_dash_file *files;
|
||||
};
|
||||
|
||||
+2
-2
@@ -4190,14 +4190,14 @@ static void dash_custom(struct mg_connection *c, int ev, void *ev_data) {
|
||||
(void) c, (void) ev, (void) ev_data;
|
||||
}
|
||||
|
||||
static int dash_authenticate(const char *user, const char *pass) {
|
||||
static int dash_authenticate(char *user, size_t userlen, const char *pass) {
|
||||
int level = 0;
|
||||
if (strcmp(pass, "admin") == 0) {
|
||||
level = 7;
|
||||
} else if (strcmp(pass, "user") == 0) {
|
||||
level = 3;
|
||||
}
|
||||
(void) user;
|
||||
(void) user, (void) userlen;
|
||||
return level;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "mongoose.h"
|
||||
|
||||
static struct mg_dash s_dash;
|
||||
static int authenticate(const char *user, const char *pass);
|
||||
static int authenticate(char *user, size_t userlen, const char *pass);
|
||||
|
||||
// Action buttons
|
||||
static bool s_action1, s_action2;
|
||||
@@ -176,14 +176,15 @@ static struct mg_field_set set_graph2 = {
|
||||
"graph2", fields_graph2, read_graph2, NULL, 0, 0, NULL,
|
||||
};
|
||||
|
||||
static int authenticate(const char *user, const char *pass) {
|
||||
static int authenticate(char *user, size_t userlen, const char *pass) {
|
||||
int level = 0; // Authentication failure
|
||||
if (strcmp(pass, "admin") == 0) {
|
||||
mg_snprintf(user, userlen, "%s", "admin");
|
||||
level = 7; // Administrator
|
||||
} else if (strcmp(pass, "user") == 0) {
|
||||
mg_snprintf(user, userlen, "%s", "user");
|
||||
level = 3; // Ordinary dude
|
||||
}
|
||||
(void) user;
|
||||
return level;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user