package api import ( "context" "fmt" "github.com/loveuer/nf" "github.com/loveuer/nf/nft/resp" "time" "ultone/internal/handler" "ultone/internal/middleware/auth" "ultone/internal/middleware/front" "ultone/internal/middleware/logger" "ultone/internal/middleware/oplog" "ultone/internal/middleware/privilege" "ultone/internal/model" "ultone/internal/opt" ) func initApp(ctx context.Context) *nf.App { engine := nf.New(nf.Config{DisableLogger: true}) engine.Use(logger.New()) // todo: add project prefix, if you need // for example: app := engine.Group("/api/{project}") app := engine.Group("/api") app.Get("/available", func() nf.HandlerFunc { return func(c *nf.Ctx) error { now := time.Now() return resp.Resp200(c, nf.Map{"ok": opt.OK, "start": opt.Start, "now": now, "duration": fmt.Sprint(now.Sub(opt.Start))}) } }()) { api := app.Group("/user") api.Post("/auth/login", oplog.NewOpLog(ctx), handler.AuthLogin) api.Get("/auth/login", auth.NewAuth(), handler.AuthVerify) api.Post("/auth/logout", auth.NewAuth(), oplog.NewOpLog(ctx), handler.AuthLogout) api.Post("/update", auth.NewAuth(), handler.UserUpdate) mng := api.Group("/manage") mng.Use(auth.NewAuth(), privilege.Verify( privilege.RelationAnd, model.PrivilegeUserManage, )) mng.Get("/user/list", handler.ManageUserList) mng.Post("/user/create", oplog.NewOpLog(ctx), handler.ManageUserCreate) mng.Post("/user/update", oplog.NewOpLog(ctx), handler.ManageUserUpdate) mng.Post("/user/delete", oplog.NewOpLog(ctx), handler.ManageUserDelete) } { api := app.Group("/log") api.Use(auth.NewAuth(), privilege.Verify(privilege.RelationAnd, model.PrivilegeOpLog)) api.Get("/category/list", handler.LogCategories()) api.Get("/content/list", handler.LogList) } { // todo: 替换 xxx // todo: 这里写你的模块和接口 api := app.Group("/xxx") api.Use(auth.NewAuth()) _ = api // todo: 添加自己的接口后删除该行 } if opt.EnableFront { engine.Use(front.NewFront(&front.DefaultFront, "dist/front/browser")) } return engine }