From 9bc18666add565d89e19cb513ea02eaca6eb767d Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Mon, 9 Jun 2025 13:19:49 +0100 Subject: [PATCH] chore: route trailing slash --- internal/api/api.go | 10 ++++++---- internal/api/auth.go | 4 +++- internal/api/middleware.go | 1 + internal/api/routes.go | 26 +++++++++++++------------- internal/lib/utils.go | 1 + 5 files changed, 24 insertions(+), 18 deletions(-) diff --git a/internal/api/api.go b/internal/api/api.go index 823e4c4..2ae4ea7 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -15,8 +15,8 @@ import ( type API struct { ConfigDirectory string - instance *echo.Echo - db *models.DB + instance *echo.Echo + db *models.DB } func (api *API) Initialize() { @@ -34,15 +34,17 @@ func (api *API) Initialize() { api.instance = ech api.db = db + // TODO: Update with appropriate origins when finishing v1 api.instance.Use(middleware.CORSWithConfig(middleware.CORSConfig{ AllowOrigins: []string{"*"}, })) // TODO: Change and store the secret separately when finilizing v1. api.instance.Use(session.Middleware(sessions.NewCookieStore([]byte("SECRET")))) - + api.instance.Pre(middleware.AddTrailingSlash()) + api.ClientRoutes() api.UserRoutes() api.AuthRoutes() - + api.instance.Logger.Fatal(api.instance.Start(fmt.Sprintf(":%d", lib.DEFAULT_PORT))) } diff --git a/internal/api/auth.go b/internal/api/auth.go index eb2fcd9..47946ce 100644 --- a/internal/api/auth.go +++ b/internal/api/auth.go @@ -79,6 +79,8 @@ func (api *API) LogoutHandler(context echo.Context) error { return context.String(http.StatusInternalServerError, "Unexpected error deleting User session!") } - log.Println(fmt.Sprintf("User with SessionID %s logged out.", sessionId)) + id := context.Get("id") + + log.Println(fmt.Sprintf("User with ID %s logged out.", id)) return context.String(http.StatusOK, "Logged out successfully!") } diff --git a/internal/api/middleware.go b/internal/api/middleware.go index a58d434..2779210 100644 --- a/internal/api/middleware.go +++ b/internal/api/middleware.go @@ -36,6 +36,7 @@ func (api *API) AuthSessionMiddleware(next echo.HandlerFunc) echo.HandlerFunc { return context.String(http.StatusUnauthorized, "User not authenticated!") } + context.Set("id", sess.Values["id"]) context.Set("sessionId", sess.Values["sessionId"]) context.Set("username", sess.Values["username"]) diff --git a/internal/api/routes.go b/internal/api/routes.go index 85ea956..bd38c06 100644 --- a/internal/api/routes.go +++ b/internal/api/routes.go @@ -3,13 +3,13 @@ package api import "github.com/labstack/echo/v4/middleware" func (api *API) ClientRoutes() { - clients := api.instance.Group("/api/clients") - + clients := api.instance.Group("/api/clients", api.AuthSessionMiddleware) + clients.GET("/", api.GetAllClientsHandler) clients.POST("/", api.CreateClientHandler) - clients.GET("/:id", api.GetClientHandler) - clients.PUT("/:id", api.UpdateClientHandler) - clients.DELETE("/:id", api.DeleteClientHandler) + clients.GET("/:id/", api.GetClientHandler) + clients.PUT("/:id/", api.UpdateClientHandler) + clients.DELETE("/:id/", api.DeleteClientHandler) } func (api *API) UserRoutes() { @@ -17,17 +17,17 @@ func (api *API) UserRoutes() { users.GET("/", api.GetAllUsersHandler) users.POST("/", api.CreateUserHandler) - users.GET("/:id", api.GetUserHandler) - users.PUT("/:id", api.UpdateUserHandler, api.AuthSessionMiddleware) - users.PUT("/:id/security", api.UpdateUserSecurityDetailsHandler) - users.PUT("/:id/logo", api.UpdateUserLogoHandler, middleware.BodyLimit("2M")) - users.DELETE("/:id", api.DeleteUserHandler) - users.DELETE("/:id/logo", api.DeleteUserLogoHandler) + users.GET("/:id/", api.GetUserHandler) + users.PUT("/:id/", api.UpdateUserHandler, api.AuthSessionMiddleware) + users.PUT("/:id/security/", api.UpdateUserSecurityDetailsHandler) + users.PUT("/:id/logo/", api.UpdateUserLogoHandler, middleware.BodyLimit("2M")) + users.DELETE("/:id/", api.DeleteUserHandler, api.AuthSessionMiddleware) + users.DELETE("/:id/logo/", api.DeleteUserLogoHandler, api.AuthSessionMiddleware) } func (api *API) AuthRoutes() { auth := api.instance.Group("/api/auth") - auth.POST("/login", api.LoginHandler) - auth.DELETE("/logout", api.LogoutHandler, api.AuthSessionMiddleware) + auth.POST("/login/", api.LoginHandler) + auth.DELETE("/logout/", api.LogoutHandler, api.AuthSessionMiddleware) } diff --git a/internal/lib/utils.go b/internal/lib/utils.go index 5bf402a..833b8fd 100644 --- a/internal/lib/utils.go +++ b/internal/lib/utils.go @@ -43,6 +43,7 @@ func CreateSession(session *sessions.Session, context echo.Context, user *types. MaxAge: 3600, HttpOnly: true, } + session.Values["id"] = user.ID session.Values["sessionId"] = user.SessionID session.Values["username"] = user.Username