54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
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
|
|
}
|