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
This commit is contained in:
Björn Benouarets
2025-09-25 23:24:37 +02:00
parent e76469ad55
commit b4a0a6b611
6 changed files with 112 additions and 0 deletions

15
routes/access.go Normal file
View File

@@ -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)
}

27
routes/api.go Normal file
View File

@@ -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)
}

16
routes/auth.go Normal file
View File

@@ -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)
}

20
routes/session.go Normal file
View File

@@ -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)
}

19
routes/test.go Normal file
View File

@@ -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)
})
}

15
routes/user.go Normal file
View File

@@ -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)
}