登录功能完成
This commit is contained in:
39
internal/api/v1/middleware/admin.go
Normal file
39
internal/api/v1/middleware/admin.go
Normal 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()
|
||||
}
|
||||
11
internal/api/v1/middleware/grant.go
Normal file
11
internal/api/v1/middleware/grant.go
Normal 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)
|
||||
}
|
||||
43
internal/api/v1/middleware/logger.go
Normal file
43
internal/api/v1/middleware/logger.go
Normal 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()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user