Files
hk4e/service/gm-hk4e/controller/controller.go
2022-11-20 15:38:00 +08:00

76 lines
1.9 KiB
Go

package controller
import (
"flswld.com/common/config"
"flswld.com/light"
waterAuth "flswld.com/water-api/auth"
"github.com/gin-gonic/gin"
"net/http"
"strconv"
"strings"
)
type Controller struct {
rpcWaterAuthConsumer *light.Consumer
rpcHk4eGatewayConsumer *light.Consumer
}
func NewController(rpcWaterAuthConsumer *light.Consumer, rpcHk4eGatewayConsumer *light.Consumer) (r *Controller) {
r = new(Controller)
r.rpcWaterAuthConsumer = rpcWaterAuthConsumer
r.rpcHk4eGatewayConsumer = rpcHk4eGatewayConsumer
go r.registerRouter()
return r
}
func (c *Controller) getAccessToken(context *gin.Context) string {
accessToken := context.GetHeader("Authorization")
divIndex := strings.Index(accessToken, " ")
if divIndex > 0 {
payload := accessToken[divIndex+1:]
return payload
} else {
return ""
}
}
// access_token鉴权
func (c *Controller) authorize() gin.HandlerFunc {
return func(context *gin.Context) {
valid, err := waterAuth.WaterVerifyAccessToken(c.rpcWaterAuthConsumer, c.getAccessToken(context))
if err == nil && valid == true {
// 验证通过
context.Next()
return
}
// 验证不通过
context.Abort()
context.JSON(http.StatusOK, gin.H{
"code": "10001",
"msg": "没有访问权限",
})
}
}
func (c *Controller) registerRouter() {
if config.CONF.Logger.Level == "DEBUG" {
gin.SetMode(gin.DebugMode)
} else {
gin.SetMode(gin.ReleaseMode)
}
engine := gin.Default()
// gacha
engine.GET("/gm/gacha", c.gacha)
engine.GET("/gm/gacha/details", c.gachaDetails)
engine.Use(c.authorize())
// gate
engine.POST("/gm/gate/state", c.changeGateState)
engine.POST("/gm/gate/kick", c.kickPlayer)
engine.GET("/gm/gate/online", c.getOnlineUser)
engine.POST("/gm/gate/forbid", c.forbidUser)
engine.POST("/gm/gate/forbid/cancel", c.unForbidUser)
port := strconv.FormatInt(int64(config.CONF.HttpPort), 10)
portStr := ":" + port
_ = engine.Run(portStr)
}