First merge from develop to main (WIP) #7
@@ -1,12 +1,16 @@
|
|||||||
package middleware
|
package middleware
|
||||||
|
|
||||||
import "github.com/gin-gonic/gin"
|
import (
|
||||||
|
"nixcn-cms/utils"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
func ApiVersionCheck() gin.HandlerFunc {
|
func ApiVersionCheck() gin.HandlerFunc {
|
||||||
return func(c *gin.Context) {
|
return func(c *gin.Context) {
|
||||||
apiVersion := c.GetHeader("X-Api-Version")
|
apiVersion := c.GetHeader("X-Api-Version")
|
||||||
if apiVersion == "" {
|
if apiVersion == "" {
|
||||||
c.Abort()
|
utils.HttpAbort(c, 400, "", "Api Version Not Found")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.Next()
|
c.Next()
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import (
|
|||||||
|
|
||||||
func Router(e *gin.Engine) {
|
func Router(e *gin.Engine) {
|
||||||
// API Services
|
// API Services
|
||||||
api := e.Group("/api/v1", middleware.ApiVersionCheck())
|
api := e.Group("/api/v1")
|
||||||
auth.Handler(api.Group("/auth"))
|
auth.Handler(api.Group("/auth"))
|
||||||
user.Handler(api.Group("/user"))
|
user.Handler(api.Group("/user", middleware.ApiVersionCheck()))
|
||||||
event.Handler(api.Group("/event"))
|
event.Handler(api.Group("/event", middleware.ApiVersionCheck()))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func Handler(r *gin.RouterGroup) {
|
func Handler(r *gin.RouterGroup) {
|
||||||
r.GET("/redirect", Redirect, middleware.JWTAuth(false))
|
r.GET("/redirect", middleware.JWTAuth(false), Redirect)
|
||||||
r.POST("/magic", Magic)
|
r.POST("/magic", middleware.ApiVersionCheck(), Magic)
|
||||||
r.POST("/token", Token)
|
r.POST("/token", middleware.ApiVersionCheck(), Token)
|
||||||
r.POST("/refresh", Refresh)
|
r.POST("/refresh", middleware.ApiVersionCheck(), Refresh)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ func Magic(c *gin.Context) {
|
|||||||
uriData := struct {
|
uriData := struct {
|
||||||
Uri string `json:"uri"`
|
Uri string `json:"uri"`
|
||||||
}{url.String()}
|
}{url.String()}
|
||||||
|
|
||||||
utils.HttpResponse(c, 200, "", "magiclink sent", uriData)
|
utils.HttpResponse(c, 200, "", "magiclink sent", uriData)
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -11,5 +11,5 @@ func Handler(r *gin.RouterGroup) {
|
|||||||
r.GET("/info", Info)
|
r.GET("/info", Info)
|
||||||
r.GET("/checkin", Checkin)
|
r.GET("/checkin", Checkin)
|
||||||
r.GET("/checkin/query", CheckinQuery)
|
r.GET("/checkin/query", CheckinQuery)
|
||||||
r.POST("/checkin/submit", CheckinSubmit, middleware.Permission(20))
|
r.POST("/checkin/submit", middleware.Permission(20), CheckinSubmit)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ func Handler(r *gin.RouterGroup) {
|
|||||||
r.Use(middleware.JWTAuth(true), middleware.Permission(5))
|
r.Use(middleware.JWTAuth(true), middleware.Permission(5))
|
||||||
r.GET("/info", Info)
|
r.GET("/info", Info)
|
||||||
r.PATCH("/update", Update)
|
r.PATCH("/update", Update)
|
||||||
r.GET("/list", List, middleware.Permission(20))
|
r.GET("/list", middleware.Permission(20), List)
|
||||||
r.POST("/full", Full, middleware.Permission(40))
|
r.POST("/full", middleware.Permission(40), Full)
|
||||||
r.POST("/create", Create, middleware.Permission(50))
|
r.POST("/create", middleware.Permission(50), Create)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
package utils
|
package utils
|
||||||
|
|
||||||
import "github.com/gin-gonic/gin"
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/goccy/go-json"
|
||||||
|
)
|
||||||
|
|
||||||
type RespStatus struct {
|
type RespStatus struct {
|
||||||
Code int `json:"code"`
|
Code int `json:"code"`
|
||||||
@@ -9,22 +14,41 @@ type RespStatus struct {
|
|||||||
Data any `json:"data"`
|
Data any `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func HttpResponse(c *gin.Context, code int, errorId string, status string, data ...any) {
|
func render(c *gin.Context, code int, id string, status string, data []any, abort bool) {
|
||||||
var resp = RespStatus{
|
resp := RespStatus{
|
||||||
Code: code,
|
Code: code,
|
||||||
ErrorId: errorId,
|
ErrorId: id,
|
||||||
Status: status,
|
Status: status,
|
||||||
Data: data,
|
|
||||||
}
|
}
|
||||||
c.JSON(code, resp)
|
|
||||||
|
switch len(data) {
|
||||||
|
case 0:
|
||||||
|
resp.Data = nil
|
||||||
|
case 1:
|
||||||
|
resp.Data = data[0]
|
||||||
|
default:
|
||||||
|
resp.Data = data
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonBytes, err := json.Marshal(resp)
|
||||||
|
if err != nil {
|
||||||
|
c.Status(http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.Header("Content-Type", "application/json; charset=utf-8")
|
||||||
|
if abort {
|
||||||
|
c.AbortWithStatus(code)
|
||||||
|
} else {
|
||||||
|
c.Status(code)
|
||||||
|
}
|
||||||
|
_, _ = c.Writer.Write(jsonBytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
func HttpAbort(c *gin.Context, code int, errorId string, status string, data ...any) {
|
func HttpResponse(c *gin.Context, code int, id string, status string, data ...any) {
|
||||||
var resp = RespStatus{
|
render(c, code, id, status, data, false)
|
||||||
Code: code,
|
}
|
||||||
ErrorId: errorId,
|
|
||||||
Status: status,
|
func HttpAbort(c *gin.Context, code int, id string, status string, data ...any) {
|
||||||
Data: data,
|
render(c, code, id, status, data, true)
|
||||||
}
|
|
||||||
c.AbortWithStatusJSON(code, resp)
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user