first commit

This commit is contained in:
2026-10-25 20:27:59 +08:00
commit 332b7dcd08
27 changed files with 1708 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
package middleware
import (
"strings"
"github.com/gin-gonic/gin"
"portal-mini-go/internal/pkg/errors"
"portal-mini-go/internal/pkg/token"
)
const adminIDCtxKey = "admin_id"
// AdminAuth 校验后台请求的 Bearer JWT,校验通过后将 admin_id 注入 context。
func AdminAuth(jwtSecret string) gin.HandlerFunc {
return func(c *gin.Context) {
auth := c.GetHeader("Authorization")
const prefix = "Bearer "
if !strings.HasPrefix(auth, prefix) {
c.Error(errors.ErrUnauthorized)
c.Abort()
return
}
claims, err := token.Parse(jwtSecret, strings.TrimPrefix(auth, prefix))
if err != nil {
c.Error(errors.ErrUnauthorized)
c.Abort()
return
}
c.Set(adminIDCtxKey, claims.AdminID)
c.Next()
}
}
// AdminID 从 gin.Context 取出已认证的后台管理员 ID。
func AdminID(c *gin.Context) string {
if v, ok := c.Get(adminIDCtxKey); ok {
if s, ok := v.(string); ok {
return s
}
}
return ""
}