refactor: auth.

This commit is contained in:
2026-04-29 10:18:12 +08:00
parent 84217c929e
commit 5f491b1375
2 changed files with 25 additions and 18 deletions
+4 -2
View File
@@ -29,8 +29,10 @@ func NewJWTService(secret string, expiresIn time.Duration) *JWTService {
// 生成带HMAC签名的Token // 生成带HMAC签名的Token
func (s *JWTService) GenerateToken() (string, error) { func (s *JWTService) GenerateToken() (string, error) {
claims := jwt.MapClaims{ claims := jwt.MapClaims{
"exp": time.Now().Add(s.expiresIn).Unix(), "exp": time.Now().Add(s.expiresIn).Unix(),
"iat": time.Now().Unix(), "iat": time.Now().Unix(),
"tokenType": "device",
"issuedBy": "device-auth",
} }
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
+21 -16
View File
@@ -17,6 +17,26 @@ func SetupRouter() *gin.Engine {
kindergartenAdminController := controllers.NewKindergartenAdminController() kindergartenAdminController := controllers.NewKindergartenAdminController()
userAdminController := controllers.NewUserAdminController() userAdminController := controllers.NewUserAdminController()
systemDebugController := controllers.NewSystemDebugController() systemDebugController := controllers.NewSystemDebugController()
deviceTokenHandler := 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,
"tokenType": "device",
})
}
r.GET("/auth/token", deviceTokenHandler)
v1 := r.Group("/api/v1") v1 := r.Group("/api/v1")
{ {
@@ -69,22 +89,7 @@ func SetupRouter() *gin.Engine {
} }
auth := v1.Group("/auth") auth := v1.Group("/auth")
{ {
auth.GET("/token", func(c *gin.Context) { auth.GET("/token", deviceTokenHandler)
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 return r