This commit is contained in:
ljw
2024-09-13 15:57:29 +08:00
commit c53df223d1
112 changed files with 14353 additions and 0 deletions

32
http/middleware/admin.go Normal file
View File

@@ -0,0 +1,32 @@
package middleware
import (
"Gwen/http/response"
"Gwen/service"
"github.com/gin-gonic/gin"
)
// AdminAuth 后台权限验证中间件
func AdminAuth() gin.HandlerFunc {
return func(c *gin.Context) {
//测试先关闭
token := c.GetHeader("api-token")
if token == "" {
response.Fail(c, 403, "请先登录")
c.Abort()
return
}
user := service.AllService.UserService.InfoByAccessToken(token)
if user.Id == 0 {
response.Fail(c, 403, "请先登录")
c.Abort()
return
}
c.Set("curUser", user)
c.Set("token", token)
c.Next()
}
}

View File

@@ -0,0 +1,22 @@
package middleware
import (
"Gwen/http/response"
"Gwen/service"
"github.com/gin-gonic/gin"
)
// AdminPrivilege ...
func AdminPrivilege() gin.HandlerFunc {
return func(c *gin.Context) {
u := service.AllService.UserService.CurUser(c)
if !service.AllService.UserService.IsAdmin(u) {
response.Fail(c, 403, "无权限")
c.Abort()
return
}
c.Next()
}
}

23
http/middleware/cors.go Normal file
View File

@@ -0,0 +1,23 @@
package middleware
import (
"github.com/gin-gonic/gin"
"net/http"
)
// Cors 跨域
func Cors() gin.HandlerFunc {
return func(c *gin.Context) {
origin := c.GetHeader("Origin")
//fmt.Println("origin", origin)
c.Header("Access-Control-Allow-Origin", origin)
c.Header("Access-Control-Allow-Headers", "api-token,content-type,authorization ")
c.Header("Access-Control-Allow-Methods", c.Request.Method)
c.Header("Access-Control-Allow-Credentials", "true")
if c.Request.Method == "OPTIONS" {
c.AbortWithStatus(http.StatusNoContent)
return
}
c.Next()
}
}

50
http/middleware/jwt.go Normal file
View File

@@ -0,0 +1,50 @@
package middleware
import (
"Gwen/global"
"Gwen/http/response"
"Gwen/service"
"github.com/gin-gonic/gin"
)
func JwtAuth() gin.HandlerFunc {
return func(c *gin.Context) {
//测试先关闭
token := c.GetHeader("api-token")
if token == "" {
response.Fail(c, 403, "请先登录")
c.Abort()
return
}
uid, err := global.Jwt.ParseToken(token)
if err != nil {
response.Fail(c, 403, "请先登录")
c.Abort()
return
}
if uid == 0 {
response.Fail(c, 403, "请先登录")
c.Abort()
return
}
user := service.AllService.UserService.InfoById(uid)
//user := &model.User{
// Id: uid,
// Username: "测试用户",
//}
if user.Id == 0 {
response.Fail(c, 403, "请先登录")
c.Abort()
return
}
if !service.AllService.UserService.CheckUserEnable(user) {
response.Fail(c, 101, "你已被禁用")
c.Abort()
return
}
c.Set("curUser", user)
c.Next()
}
}

20
http/middleware/logger.go Normal file
View File

@@ -0,0 +1,20 @@
package middleware
import (
"Gwen/global"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
)
// Logger 日志中间件
func Logger() gin.HandlerFunc {
return func(c *gin.Context) {
global.Logger.WithFields(
logrus.Fields{
"uri": c.Request.URL,
"ip": c.ClientIP(),
"method": c.Request.Method,
}).Debug("Request")
c.Next()
}
}

View File

@@ -0,0 +1,44 @@
package middleware
import (
"Gwen/service"
"github.com/gin-gonic/gin"
)
func RustAuth() gin.HandlerFunc {
return func(c *gin.Context) {
//获取HTTP_AUTHORIZATION
token := c.GetHeader("Authorization")
if token == "" {
c.JSON(401, gin.H{
"error": "Unauthorized",
})
c.Abort()
return
}
//提取token格式是Bearer {token}
//这里只是简单的提取
token = token[7:]
//验证token
user := service.AllService.UserService.InfoByAccessToken(token)
if user.Id == 0 {
c.JSON(401, gin.H{
"error": "Unauthorized",
})
c.Abort()
return
}
if !service.AllService.UserService.CheckUserEnable(user) {
c.JSON(401, gin.H{
"error": "账号已被禁用",
})
c.Abort()
return
}
c.Set("curUser", user)
c.Set("token", token)
c.Next()
}
}