第一版完成

This commit is contained in:
2025-07-29 12:45:07 +08:00
commit 7fd39fb409
83 changed files with 8717 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
package middleware
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
// UserAuth 用户认证中间件
func UserAuth(r *ghttp.Request) {
token := r.Header.Get("Authorization")
if token == "" {
r.Response.WriteJson(g.Map{
"code": 401,
"message": "未提供认证令牌",
})
r.ExitAll()
return
}
// 简单的token验证实际项目中应该验证JWT
if token != "Bearer user-token" {
r.Response.WriteJson(g.Map{
"code": 401,
"message": "认证令牌无效",
})
r.ExitAll()
return
}
// 设置用户信息到上下文
r.SetCtxVar("user_id", 1)
r.SetCtxVar("username", "testuser")
r.Middleware.Next()
}
// AdminAuth 管理员认证中间件
func AdminAuth(r *ghttp.Request) {
token := r.Header.Get("Authorization")
if token == "" {
r.Response.WriteJson(g.Map{
"code": 401,
"message": "未提供认证令牌",
})
r.ExitAll()
return
}
// 简单的token验证实际项目中应该验证JWT
if token != "Bearer admin-token" {
r.Response.WriteJson(g.Map{
"code": 401,
"message": "管理员认证令牌无效",
})
r.ExitAll()
return
}
// 设置管理员信息到上下文
r.SetCtxVar("admin_id", 1)
r.SetCtxVar("admin_username", "admin")
r.SetCtxVar("admin_role", "super_admin")
r.Middleware.Next()
}

View File

@@ -0,0 +1,11 @@
package middleware
import (
"github.com/gogf/gf/v2/net/ghttp"
)
// CORS 跨域中间件
func CORS(r *ghttp.Request) {
r.Response.CORSDefault()
r.Middleware.Next()
}

View File

@@ -0,0 +1,54 @@
package middleware
import (
"cms-api/internal/model"
"github.com/gogf/gf/v2/errors/gcode"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
// ResponseHandler 统一响应处理中间件
func ResponseHandler(r *ghttp.Request) {
r.Middleware.Next()
// 如果已经有响应内容,则不处理
if r.Response.BufferLength() > 0 {
return
}
var (
ctx = r.Context()
res = r.GetHandlerResponse()
err = r.GetError()
msg = "操作成功"
data interface{}
)
var responseCode int = 200
if err != nil {
errCode := gerror.Code(err)
if errCode != gcode.CodeNil {
responseCode = int(errCode.Code())
} else {
responseCode = 500
}
msg = err.Error()
g.Log().Error(ctx, "请求处理错误:", err)
} else if r.Response.Status >= 400 {
msg = "请求失败"
responseCode = r.Response.Status
} else {
data = res
}
response := &model.Response{
Code: responseCode,
Message: msg,
Data: data,
}
r.Response.WriteJsonExit(response)
}