From f98cce27479b6623d4386bc8b938d286ce78b88f Mon Sep 17 00:00:00 2001 From: SimonFJ20 Date: Wed, 12 Mar 2025 12:33:14 +0100 Subject: [PATCH] rename auth -> session --- backend/src/controllers.h | 22 ++++++-- .../src/controllers/{auth.c => sessions.c} | 55 ++++++++++++++++++- backend/src/controllers/users.c | 2 +- backend/src/main.c | 8 +-- backend/src/session.c | 54 ------------------ backend/src/session.h | 19 ------- 6 files changed, 76 insertions(+), 84 deletions(-) rename backend/src/controllers/{auth.c => sessions.c} (63%) delete mode 100644 backend/src/session.c delete mode 100644 backend/src/session.h diff --git a/backend/src/controllers.h b/backend/src/controllers.h index ec97448..a7fdc84 100644 --- a/backend/src/controllers.h +++ b/backend/src/controllers.h @@ -2,10 +2,24 @@ #include "db.h" #include "http_server.h" -#include "session.h" #include #include +typedef struct { + int64_t user_id; + char* token; + size_t token_hash; +} Session; + +void session_construct(Session* session, int64_t user_id); +void session_destroy(Session* session); + +DEFINE_VEC(Session, SessionVec, session_vec, 16) + +void sessions_remove(SessionVec* vec, int64_t user_id); +Session* sessions_add(SessionVec* vec, int64_t user_id); +const Session* sessions_find(SessionVec* vec, const char* token); + typedef struct { int number; SessionVec sessions; @@ -18,10 +32,10 @@ void route_get_not_found(HttpCtx* ctx); void route_get_products_all(HttpCtx* ctx); -void route_post_user_register(HttpCtx* ctx); +void route_post_users_register(HttpCtx* ctx); -void route_post_auth_login(HttpCtx* ctx); -void route_post_auth_logout(HttpCtx* ctx); +void route_post_sessions_login(HttpCtx* ctx); +void route_post_sessions_logout(HttpCtx* ctx); const Session* header_session(HttpCtx* ctx); const Session* middleware_session(HttpCtx* ctx); diff --git a/backend/src/controllers/auth.c b/backend/src/controllers/sessions.c similarity index 63% rename from backend/src/controllers/auth.c rename to backend/src/controllers/sessions.c index 77ddfb2..c96542a 100644 --- a/backend/src/controllers/auth.c +++ b/backend/src/controllers/sessions.c @@ -4,7 +4,7 @@ #include "../str_util.h" #include -void route_post_auth_login(HttpCtx* ctx) +void route_post_sessions_login(HttpCtx* ctx) { Cx* cx = http_ctx_user_ctx(ctx); @@ -51,7 +51,7 @@ l0_return: auth_login_req_destroy(&req); } -void route_post_auth_logout(HttpCtx* ctx) +void route_post_sessions_logout(HttpCtx* ctx) { Cx* cx = http_ctx_user_ctx(ctx); const Session* session = header_session(ctx); @@ -84,3 +84,54 @@ const Session* middleware_session(HttpCtx* ctx) } return session; } + +void session_construct(Session* session, int64_t user_id) +{ + char* token = str_random(64); + size_t token_hash = str_fast_hash(token); + *session = (Session) { user_id, token, token_hash }; +} + +void session_destroy(Session* session) +{ + free(session->token); + *session = (Session) { + .user_id = 0, + .token = NULL, + .token_hash = 0, + }; +} + +void sessions_remove(SessionVec* vec, int64_t user_id) +{ + for (size_t i = 0; i < vec->size; ++i) { + if (vec->data[i].user_id == user_id) { + session_destroy(&vec->data[i]); + } + } +} + +Session* sessions_add(SessionVec* vec, int64_t user_id) +{ + for (size_t i = 0; i < vec->size; ++i) { + if (vec->data[i].user_id == 0) { + session_construct(&vec->data[i], user_id); + return &vec->data[i]; + } + } + Session session; + session_construct(&session, user_id); + session_vec_push(vec, session); + return &vec->data[vec->size - 1]; +} + +const Session* sessions_find(SessionVec* vec, const char* token) +{ + size_t token_hash = str_fast_hash(token); + for (size_t i = 0; i < vec->size; ++i) { + if (vec->data[i].token_hash == token_hash) { + return &vec->data[i]; + } + } + return NULL; +} diff --git a/backend/src/controllers/users.c b/backend/src/controllers/users.c index 9cb20f7..d802835 100644 --- a/backend/src/controllers/users.c +++ b/backend/src/controllers/users.c @@ -4,7 +4,7 @@ #include "../str_util.h" #include -void route_post_user_register(HttpCtx* ctx) +void route_post_users_register(HttpCtx* ctx) { Cx* cx = http_ctx_user_ctx(ctx); diff --git a/backend/src/main.c b/backend/src/main.c index a0b5bda..44660d7 100644 --- a/backend/src/main.c +++ b/backend/src/main.c @@ -4,7 +4,6 @@ #include "json.h" #include "models.h" #include "models_json.h" -#include "session.h" #include "str_util.h" #include #include @@ -44,9 +43,10 @@ int main(void) http_server_get(server, "/api/products/all", route_get_products_all); - http_server_post(server, "/api/users/register", route_post_user_register); - http_server_post(server, "/api/auth/login", route_post_auth_login); - http_server_post(server, "/api/auth/logout", route_post_auth_logout); + http_server_post(server, "/api/users/register", route_post_users_register); + http_server_post(server, "/api/sessions/login", route_post_sessions_login); + http_server_post( + server, "/api/sessions/logout", route_post_sessions_logout); http_server_get(server, "/", route_get_index); http_server_post(server, "/set_number", route_post_set_number); diff --git a/backend/src/session.c b/backend/src/session.c deleted file mode 100644 index e7820ec..0000000 --- a/backend/src/session.c +++ /dev/null @@ -1,54 +0,0 @@ -#include "session.h" -#include "str_util.h" -#include - -void session_construct(Session* session, int64_t user_id) -{ - char* token = str_random(64); - size_t token_hash = str_fast_hash(token); - *session = (Session) { user_id, token, token_hash }; -} - -void session_destroy(Session* session) -{ - free(session->token); - *session = (Session) { - .user_id = 0, - .token = NULL, - .token_hash = 0, - }; -} - -void sessions_remove(SessionVec* vec, int64_t user_id) -{ - for (size_t i = 0; i < vec->size; ++i) { - if (vec->data[i].user_id == user_id) { - session_destroy(&vec->data[i]); - } - } -} - -Session* sessions_add(SessionVec* vec, int64_t user_id) -{ - for (size_t i = 0; i < vec->size; ++i) { - if (vec->data[i].user_id == 0) { - session_construct(&vec->data[i], user_id); - return &vec->data[i]; - } - } - Session session; - session_construct(&session, user_id); - session_vec_push(vec, session); - return &vec->data[vec->size - 1]; -} - -const Session* sessions_find(SessionVec* vec, const char* token) -{ - size_t token_hash = str_fast_hash(token); - for (size_t i = 0; i < vec->size; ++i) { - if (vec->data[i].token_hash == token_hash) { - return &vec->data[i]; - } - } - return NULL; -} diff --git a/backend/src/session.h b/backend/src/session.h deleted file mode 100644 index cdd359e..0000000 --- a/backend/src/session.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "collection.h" -#include - -typedef struct { - int64_t user_id; - char* token; - size_t token_hash; -} Session; - -void session_construct(Session* session, int64_t user_id); -void session_destroy(Session* session); - -DEFINE_VEC(Session, SessionVec, session_vec, 16) - -void sessions_remove(SessionVec* vec, int64_t user_id); -Session* sessions_add(SessionVec* vec, int64_t user_id); -const Session* sessions_find(SessionVec* vec, const char* token);