package controller import ( "yitao/service" "github.com/iris-contrib/middleware/jwt" "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/core/router" "github.com/kataras/iris/v12/mvc" ) type BaseController struct { Ctx iris.Context Service *service.Service } var serv *service.Service var apiParty router.Party type ControllerInterface interface { BeforeActivation(mvc.BeforeActivation) } func LoadRouter(app *iris.Application, service *service.Service) { serv = service apiParty = app.Party("/api") registerController("/user", new(UserController)) registerController("/captcha", new(CaptchaController)) registerController("/item", new(ItemController)) registerController("/file", new(FileController)) registerController("/admin", new(AdminController)) } func registerController(root string, controller ControllerInterface) { router := mvc.New(apiParty.Party(root)) router.Register( serv, ) router.Handle(controller) } func GetUidFromCtx(ctx iris.Context) uint { // 从 jwt 中获取 uid if token, ok := ctx.Values().Get("jwt").(*jwt.Token); ok { // Use the token if needed uid := uint(token.Claims.(jwt.MapClaims)["uid"].(float64)) return uid } return 0 }