登录功能完成

This commit is contained in:
2022-10-04 00:36:01 +08:00
parent 26278707bb
commit 968eab9b06
31 changed files with 1022 additions and 36 deletions

View File

@@ -0,0 +1,39 @@
package middleware
import (
"github.com/gin-gonic/gin"
"mc-client-updater-server/internal/service"
"mc-client-updater-server/pkg/result"
"strings"
)
func AdminRequired(c *gin.Context) {
res := result.NewResult(c)
authorization := c.GetHeader("Authorization")
if authorization == "" {
res.Unauthorized()
return
}
split := strings.Split(authorization, " ")
if len(split) <= 1 || (len(split) >= 2 && split[0] != "Bearer") {
res.BadRequest()
return
}
tokenSrv := service.NewTokenService(c)
token := split[1]
tokenRow, ok := tokenSrv.VerifyToken(token)
// 若!ok则返回值已被service处理无需再次返回
if !ok {
return
}
userSrv := service.NewUserService(c)
hasRole := userSrv.JudgeRoleByToken("ROLE_admin", tokenRow)
if !hasRole {
res.NoPermission()
return
}
c.Next()
}

View File

@@ -0,0 +1,11 @@
package middleware
import (
"github.com/gin-gonic/gin"
"mc-client-updater-server/pkg/log"
)
func GrantRequired(c *gin.Context) {
instName := c.Param("name")
log.Logger.Info(instName)
}

View File

@@ -0,0 +1,43 @@
package middleware
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
"mc-client-updater-server/pkg/log"
"time"
)
func LoggerMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
startTime := time.Now()
c.Next() // 调用该请求的剩余处理程序
stopTime := time.Since(startTime)
spendTime := fmt.Sprintf("%.3f ms", float64(stopTime.Nanoseconds())/1000000)
statusCode := c.Writer.Status()
dataSize := c.Writer.Size()
if dataSize < 0 {
dataSize = 0
}
method := c.Request.Method
url := c.Request.RequestURI
Log := log.Logger.WithFields(logrus.Fields{
"spendTime": spendTime,
"path": url,
"method": method,
"status": statusCode,
})
if len(c.Errors) > 0 { // 内部错误
Log.Error(c.Errors.ByType(gin.ErrorTypePrivate))
}
if statusCode == 500 || (statusCode >= 5000 && statusCode < 6000) {
Log.Error()
} else if statusCode >= 400 && statusCode < 500 {
Log.Warn()
} else {
Log.Info()
}
}
}