First merge from develop to main (WIP) #7

Merged
sugar merged 199 commits from develop into main 2026-01-27 17:47:07 +00:00
7 changed files with 55 additions and 28 deletions
Showing only changes of commit 9b83ab565a - Show all commits

View File

@@ -1,12 +1,16 @@
package middleware
import "github.com/gin-gonic/gin"
import (
"nixcn-cms/utils"
"github.com/gin-gonic/gin"
)
func ApiVersionCheck() gin.HandlerFunc {
return func(c *gin.Context) {
apiVersion := c.GetHeader("X-Api-Version")
if apiVersion == "" {
c.Abort()
utils.HttpAbort(c, 400, "", "Api Version Not Found")
return
}
c.Next()

View File

@@ -11,8 +11,8 @@ import (
func Router(e *gin.Engine) {
// API Services
api := e.Group("/api/v1", middleware.ApiVersionCheck())
api := e.Group("/api/v1")
auth.Handler(api.Group("/auth"))
user.Handler(api.Group("/user"))
event.Handler(api.Group("/event"))
user.Handler(api.Group("/user", middleware.ApiVersionCheck()))
event.Handler(api.Group("/event", middleware.ApiVersionCheck()))
}

View File

@@ -7,8 +7,8 @@ import (
)
func Handler(r *gin.RouterGroup) {
r.GET("/redirect", Redirect, middleware.JWTAuth(false))
r.POST("/magic", Magic)
r.POST("/token", Token)
r.POST("/refresh", Refresh)
r.GET("/redirect", middleware.JWTAuth(false), Redirect)
r.POST("/magic", middleware.ApiVersionCheck(), Magic)
r.POST("/token", middleware.ApiVersionCheck(), Token)
r.POST("/refresh", middleware.ApiVersionCheck(), Refresh)
}

View File

@@ -60,7 +60,6 @@ func Magic(c *gin.Context) {
uriData := struct {
Uri string `json:"uri"`
}{url.String()}
utils.HttpResponse(c, 200, "", "magiclink sent", uriData)
return
} else {

View File

@@ -11,5 +11,5 @@ func Handler(r *gin.RouterGroup) {
r.GET("/info", Info)
r.GET("/checkin", Checkin)
r.GET("/checkin/query", CheckinQuery)
r.POST("/checkin/submit", CheckinSubmit, middleware.Permission(20))
r.POST("/checkin/submit", middleware.Permission(20), CheckinSubmit)
}

View File

@@ -10,7 +10,7 @@ func Handler(r *gin.RouterGroup) {
r.Use(middleware.JWTAuth(true), middleware.Permission(5))
r.GET("/info", Info)
r.PATCH("/update", Update)
r.GET("/list", List, middleware.Permission(20))
r.POST("/full", Full, middleware.Permission(40))
r.POST("/create", Create, middleware.Permission(50))
r.GET("/list", middleware.Permission(20), List)
r.POST("/full", middleware.Permission(40), Full)
r.POST("/create", middleware.Permission(50), Create)
}

View File

@@ -1,6 +1,11 @@
package utils
import "github.com/gin-gonic/gin"
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/goccy/go-json"
)
type RespStatus struct {
Code int `json:"code"`
@@ -9,22 +14,41 @@ type RespStatus struct {
Data any `json:"data"`
}
func HttpResponse(c *gin.Context, code int, errorId string, status string, data ...any) {
var resp = RespStatus{
func render(c *gin.Context, code int, id string, status string, data []any, abort bool) {
resp := RespStatus{
Code: code,
ErrorId: errorId,
ErrorId: id,
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) {
var resp = RespStatus{
Code: code,
ErrorId: errorId,
Status: status,
Data: data,
}
c.AbortWithStatusJSON(code, resp)
func HttpResponse(c *gin.Context, code int, id string, status string, data ...any) {
render(c, code, id, status, data, false)
}
func HttpAbort(c *gin.Context, code int, id string, status string, data ...any) {
render(c, code, id, status, data, true)
}