refactor: auth.
This commit is contained in:
@@ -31,6 +31,8 @@ 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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user