feat: auth.

This commit is contained in:
2025-03-20 16:40:39 +08:00
parent 1d9b568bef
commit c09b51ba02
4 changed files with 112 additions and 4 deletions

View File

@ -4,20 +4,41 @@ import (
"github.com/gin-gonic/gin"
"hr_receiver/controllers"
"hr_receiver/middleware"
"net/http"
)
func SetupRouter() *gin.Engine {
jwtService := middleware.NewJWTService(middleware.ApiSecret, middleware.TokenExp)
r := gin.Default()
r.Use(middleware.GzipMiddleware())
trainingController := controllers.NewTrainingController()
v1 := r.Group("/api/v1")
{
records := v1.Group("/train-records")
records := v1.Group("/train-records").Use(middleware.AuthMiddleware())
{
records.POST("", trainingController.CreateTrainingRecord)
// 可扩展其他路由GET, PUT, DELETE等
}
auth := v1.Group("/auth")
{
auth.GET("/token", func(c *gin.Context) {
clientSecret := c.GetHeader("X-API-Key")
if clientSecret != middleware.ApiSecret {
c.JSON(http.StatusUnauthorized, gin.H{"error": "invalid secret"})
return
}
token, err := jwtService.GenerateToken()
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to generate token"})
return
}
c.JSON(http.StatusOK, gin.H{"token": token})
})
}
}
return r
}