为 CORS 配置添加 `Authorization` 请求头,以支持携带认证信息的跨域请求。 feat(user-np): 改进错误信息和用户注册流程 - 在注册 VFS 服务失败时返回更详细的错误信息,包括状态码和响应体内容。 - 用户创建失败时返回具体的错误详情,并确保数据库记录被正确回滚。 - 注销用户时先尝试删除 VFS 服务中的相关资源,再执行数据库删除操作。 - 使用 `Unscoped().Delete()` 确保物理删除用户数据。 feat(vfs): 完善用户目录结构及节点创建逻辑 - 创建用户主目录 `/home/username` 及其子目录 `.Recycle_Bin`。 - 调整 `CreateVFSNode` 方法参数类型为值传递。 - 修复创建用户目录时传参不一致的问题。 - 删除用户时递归清理其在 VFS 中的所有节点,并通过代理删除关联的服务节点。 feat(mage): 新增生成 TypeScript 类型定义的任务 新增 `Gen_TS` Mage 任务用于将 OpenAPI 配置文件转换为 TypeScript 类型定义文件, 支持 `vfs`、`bookmark` 和 `user_np` 模块。
50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
|
|
bookmarks_api "git.zzyxyz.com/zzy/zzyxyz_go_api/gen/bookmarks_server"
|
|
user_np_api "git.zzyxyz.com/zzy/zzyxyz_go_api/gen/user_np_server"
|
|
"git.zzyxyz.com/zzy/zzyxyz_go_api/internal/bookmarks"
|
|
"github.com/gin-contrib/cors"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func main() {
|
|
gin.SetMode(gin.ReleaseMode)
|
|
router := gin.Default()
|
|
|
|
// 允许所有源的示例配置
|
|
config := cors.Config{
|
|
AllowAllOrigins: true,
|
|
AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "HEAD"},
|
|
AllowHeaders: []string{"Origin", "Content-Length", "Content-Type", "Authorization"},
|
|
}
|
|
router.Use(cors.New(config))
|
|
|
|
api_router := router.Group("/api")
|
|
{
|
|
// create a type that satisfies the `api.ServerInterface`,
|
|
// which contains an implementation of every operation from the generated code
|
|
if server, err := bookmarks.NewBookMarks("./data/bookmark.sqlite3"); err != nil {
|
|
log.Fatal("Failed to create bookmarks server:", err)
|
|
} else if permission, err := bookmarks.NewBookMarkPermission(); err != nil || permission == nil {
|
|
log.Fatal("Failed to create bookmarks permission:", err)
|
|
} else {
|
|
bookmarks_api.RegisterHandlersWithOptions(api_router, server, *permission)
|
|
}
|
|
|
|
// create a type that satisfies the `api.ServerInterface`,
|
|
// which contains an implementation of every operation from the generated code
|
|
if server, err := bookmarks.NewUserNP("./data/user_np.sqlite3"); err != nil {
|
|
log.Fatal("Failed to create user_np server:", err)
|
|
} else {
|
|
user_np_api.RegisterHandlers(api_router, server)
|
|
}
|
|
}
|
|
|
|
var listener = "localhost:8081"
|
|
log.Printf("Starting server at http://%s", listener)
|
|
log.Fatal(router.Run(listener))
|
|
}
|