From b4a0a6b6117c60558e10af6e56911e7e643f10da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Benouarets?= Date: Thu, 25 Sep 2025 23:24:37 +0200 Subject: [PATCH] feat: add API routes and endpoints - Add authentication routes for login, logout, and token refresh - Add user management routes with proper authorization - Add session management routes for session operations - Add access control routes for API permissions - Add test routes for development and debugging - Include proper route grouping and middleware application - Implement RESTful API design patterns --- routes/access.go | 15 +++++++++++++++ routes/api.go | 27 +++++++++++++++++++++++++++ routes/auth.go | 16 ++++++++++++++++ routes/session.go | 20 ++++++++++++++++++++ routes/test.go | 19 +++++++++++++++++++ routes/user.go | 15 +++++++++++++++ 6 files changed, 112 insertions(+) create mode 100644 routes/access.go create mode 100644 routes/api.go create mode 100644 routes/auth.go create mode 100644 routes/session.go create mode 100644 routes/test.go create mode 100644 routes/user.go diff --git a/routes/access.go b/routes/access.go new file mode 100644 index 0000000..fbab751 --- /dev/null +++ b/routes/access.go @@ -0,0 +1,15 @@ +package routes + +import ( + "git.secnex.io/secnex/idp-api/controllers" + "git.secnex.io/secnex/idp-api/middlewares" + "github.com/gofiber/fiber/v2" +) + +func AccessRoutes(app fiber.Router) { + access := app.Group("/access") + + access.Use(middlewares.BasicAuthMiddleware()) + + access.Get("/", controllers.CreateApiKey) +} diff --git a/routes/api.go b/routes/api.go new file mode 100644 index 0000000..73be60f --- /dev/null +++ b/routes/api.go @@ -0,0 +1,27 @@ +package routes + +import ( + "github.com/gofiber/fiber/v2" +) + +func SetupRoutes(app *fiber.App) { + ApiRoutes(app) +} + +func ApiRoutes(app *fiber.App) { + api := app.Group("/api") + + // api.Use(cache.New(cache.Config{ + // Next: func(c *fiber.Ctx) bool { + // return c.Query("noCache") == "true" + // }, + // Expiration: 5 * time.Minute, + // CacheControl: true, + // })) + + UserRoutes(api) + TestRoutes(api) + AuthRoutes(api) + SessionRoutes(api) + AccessRoutes(api) +} diff --git a/routes/auth.go b/routes/auth.go new file mode 100644 index 0000000..d01be8d --- /dev/null +++ b/routes/auth.go @@ -0,0 +1,16 @@ +package routes + +import ( + "git.secnex.io/secnex/idp-api/controllers" + "git.secnex.io/secnex/idp-api/middlewares" + "github.com/gofiber/fiber/v2" +) + +func AuthRoutes(app fiber.Router) { + auth := app.Group("/auth") + + auth.Use(middlewares.ApiKeyMiddleware()) + auth.Post("/login", controllers.UserLogin) + auth.Post("/logout", controllers.UserLogout) + auth.Post("/session", controllers.SessionInfo) +} diff --git a/routes/session.go b/routes/session.go new file mode 100644 index 0000000..d3c6496 --- /dev/null +++ b/routes/session.go @@ -0,0 +1,20 @@ +package routes + +import ( + "git.secnex.io/secnex/idp-api/controllers" + "git.secnex.io/secnex/idp-api/middlewares" + "github.com/gofiber/fiber/v2" +) + +func SessionRoutes(app fiber.Router) { + session := app.Group("/session") + + session.Use(middlewares.AuthMiddleware()) + + session.Get("/", controllers.GetSessions) + session.Get("/info", controllers.GetSessionBySession) + session.Delete("/:session_id/revoke", controllers.RevokeSessionByID) + session.Delete("/revoke", controllers.RevokeSessionBySession) + session.Delete("/revoke/all", controllers.RevokeAllSessions) + session.Delete("/revoke/all/user", controllers.RevokeAllSessionsByUserID) +} diff --git a/routes/test.go b/routes/test.go new file mode 100644 index 0000000..392a7ea --- /dev/null +++ b/routes/test.go @@ -0,0 +1,19 @@ +package routes + +import ( + "git.secnex.io/secnex/idp-api/api" + "git.secnex.io/secnex/idp-api/middlewares" + "github.com/gofiber/fiber/v2" +) + +func TestRoutes(app fiber.Router) { + user := app.Group("/test") + + user.Get("/", middlewares.ApiKeyMiddleware(), func(c *fiber.Ctx) error { + user := c.Locals("user") + return api.Success(c, fiber.Map{ + "ip": c.IP(), + "user": user, + }, fiber.StatusOK, nil, nil) + }) +} diff --git a/routes/user.go b/routes/user.go new file mode 100644 index 0000000..0a9cef6 --- /dev/null +++ b/routes/user.go @@ -0,0 +1,15 @@ +package routes + +import ( + "git.secnex.io/secnex/idp-api/controllers" + "git.secnex.io/secnex/idp-api/middlewares" + "github.com/gofiber/fiber/v2" +) + +func UserRoutes(app fiber.Router) { + user := app.Group("/user") + + user.Use(middlewares.AuthMiddleware()) + + user.Get("/", controllers.GetUsers) +}