added insert
This commit is contained in:
+61
-2
@@ -1,7 +1,12 @@
|
||||
#include "cJSON.h"
|
||||
#include "database.h"
|
||||
#include "sql.h"
|
||||
#include "user.h"
|
||||
|
||||
#ifndef USE_SQLITE3
|
||||
#include "file.h"
|
||||
#endif
|
||||
|
||||
User *db_insert_user(const char *username, const char *email,
|
||||
const char *password, const char *group,
|
||||
const bool *is_superuser) {
|
||||
@@ -62,7 +67,61 @@ User *db_insert_user(const char *username, const char *email,
|
||||
new_user(inserted_id, username, email, password, group, is_superuser);
|
||||
return new_db_user;
|
||||
#else
|
||||
User *asdf = new_user(0, "asdf", "asdf", "asdf", "asdf", false);
|
||||
return asdf;
|
||||
pthread_mutex_lock(&users_file_mutex);
|
||||
char *data = read_file("users_db.json");
|
||||
cJSON *users = cJSON_Parse(data);
|
||||
char *old_data = cJSON_Print(users);
|
||||
if (old_data == NULL) {
|
||||
printf("ERR");
|
||||
}
|
||||
cJSON *user = nullptr;
|
||||
int users_size = 0;
|
||||
User *found = nullptr;
|
||||
cJSON_ArrayForEach(user, users) {
|
||||
cJSON *user_id = cJSON_GetObjectItem(user, "id");
|
||||
cJSON *user_username = cJSON_GetObjectItem(user, "username");
|
||||
cJSON *user_password = cJSON_GetObjectItem(user, "password");
|
||||
cJSON *user_email = cJSON_GetObjectItem(user, "email");
|
||||
cJSON *user_group = cJSON_GetObjectItem(user, "group");
|
||||
cJSON *user_is_superuser = cJSON_GetObjectItem(user, "is_superuser");
|
||||
if (!strcmp(user_username->valuestring, username)) {
|
||||
found = new_user(user_id->valueint, user_username->valuestring,
|
||||
user_password->valuestring, user_email->valuestring,
|
||||
user_group->valuestring, user_is_superuser->valueint);
|
||||
}
|
||||
users_size++;
|
||||
}
|
||||
if (found != nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
cJSON *new_user_data = cJSON_CreateObject();
|
||||
cJSON *new_user_id = cJSON_CreateNumber(users_size);
|
||||
cJSON *new_user_username = cJSON_CreateString(username);
|
||||
cJSON *new_user_password = cJSON_CreateString(password);
|
||||
cJSON *new_user_email = cJSON_CreateString(email);
|
||||
cJSON *new_user_group = cJSON_CreateString(group);
|
||||
cJSON *new_user_is_superuser = cJSON_CreateBool(*is_superuser);
|
||||
cJSON_AddItemToObject(new_user_data, "id", new_user_id);
|
||||
cJSON_AddItemToObject(new_user_data, "username", new_user_username);
|
||||
cJSON_AddItemToObject(new_user_data, "password", new_user_password);
|
||||
cJSON_AddItemToObject(new_user_data, "email", new_user_email);
|
||||
cJSON_AddItemToObject(new_user_data, "group", new_user_group);
|
||||
cJSON_AddItemToObject(new_user_data, "is_superuser", new_user_is_superuser);
|
||||
char *new_user_data_string = cJSON_Print(new_user_data);
|
||||
printf("%s\n", new_user_data_string);
|
||||
if (users_size == 0) {
|
||||
users = cJSON_CreateArray();
|
||||
}
|
||||
cJSON_AddItemToArray(users, new_user_data);
|
||||
char *new_data = cJSON_Print(users);
|
||||
if (new_data == NULL) {
|
||||
printf("ERR");
|
||||
}
|
||||
// printf("%s\n", strdup(new_data));
|
||||
// write_file("users_db.json", new_data);
|
||||
free(new_data);
|
||||
pthread_mutex_unlock(&users_file_mutex);
|
||||
User *return_user = new_user(users_size, username, email, password, group, is_superuser);
|
||||
return return_user;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"username": "tola",
|
||||
"email": "mail@example.com",
|
||||
"password": "e0c7bfa5b8e4ae0cecfc1f14093a71e05c27abd93a3850fc35f008c3baf866b4",
|
||||
"group": "root",
|
||||
"is_superuser": true
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"username": "lisa",
|
||||
"email": "lisa@example.com",
|
||||
"password": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b",
|
||||
"group": "users",
|
||||
"is_superuser": false
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user