39 lines
858 B
Go
39 lines
858 B
Go
package middleware
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"gorm.io/gorm"
|
|
"mc-client-updater-server/internal/service"
|
|
"mc-client-updater-server/pkg/result"
|
|
)
|
|
|
|
func GrantRequired(c *gin.Context) {
|
|
instName := c.Param("name")
|
|
// 判断instance name是否存在
|
|
srv := service.NewInstanceService(c)
|
|
res := result.NewResult(c)
|
|
instEntity, err := srv.GetInstanceByName(instName)
|
|
if err == gorm.ErrRecordNotFound {
|
|
res.InvalidInstance(instName)
|
|
return
|
|
} else if err != nil {
|
|
res.InternalServerError("查询实例对象时出现错误")
|
|
return
|
|
}
|
|
c.Set("instance", instEntity)
|
|
|
|
// 判断grant_code是否合法
|
|
grantCode := c.GetHeader("GrantCode")
|
|
if grantCode == "" {
|
|
res.Unauthorized()
|
|
return
|
|
}
|
|
grantEntity, err := srv.GetGrantByToken(grantCode)
|
|
if err != nil {
|
|
res.Unauthorized()
|
|
return
|
|
}
|
|
c.Set("grant", grantEntity)
|
|
c.Next()
|
|
}
|