mc-client-updater-server/internal/api/v1/middleware/grant.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()
}