package api import ( "context" "github.com/loveuer/nf" "github.com/loveuer/nfflow/internal/handler" "github.com/loveuer/nfflow/internal/middleware/auth" "github.com/loveuer/nfflow/internal/middleware/front" "github.com/loveuer/nfflow/internal/middleware/oplog" "github.com/loveuer/nfflow/internal/middleware/privilege" "github.com/loveuer/nfflow/internal/model" "time" ) func initApp(ctx context.Context) *nf.App { engine := nf.New(nf.Config{}) app := engine.Group("/api") app.Get("/available", func(c *nf.Ctx) error { return c.JSON(nf.Map{"status": 200, "ok": true, "time": time.Now()}) }) { 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) 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) } { api := app.Group("/task") api.Get("/list", handler.TaskList) api.Post("/create", handler.TaskCreate) api.Post("/input/create", handler.TaskInputCreate) api.Post("/input/update", handler.TaskInputUpdate) } engine.Use(front.NewFront(&front.DefaultFront, "dist/front/browser")) return engine }