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:
15
routes/access.go
Normal file
15
routes/access.go
Normal 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
27
routes/api.go
Normal 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
16
routes/auth.go
Normal 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
20
routes/session.go
Normal 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
19
routes/test.go
Normal 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
15
routes/user.go
Normal 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)
|
||||
}
|
Reference in New Issue
Block a user