# VBase 集成文档 本文档介绍如何将 VBase 集成到您的 Golang (Vigo) 项目中,快速实现用户管理、权限控制和组织架构功能。 ## 1. 快速集成 (Quick Start) 集成 VBase 仅需简单几步: ### 1.1 引入依赖 在您的项目中引入 VBase: ```go import "github.com/veypi/vbase" ``` ### 1.2 挂载路由 在您的项目根路由初始化处,挂载 VBase 路由: ```go // 您的项目初始化代码 func init() { // 挂载 vbase 路由到 /vbase 路径下 // 这样 vbase 的 API 将可以通过 /vb/api/auth/login 等访问 MyRouter.Extend("/vb", vbase.Router) } ``` ### 1.3 配置数据库 确保您的项目已经配置了 GORM 数据库连接,VBase 将复用该连接。 ```go // VBase 会自动读取您的配置,前提是您使用了兼容的配置结构或手动设置 vbase.Config.SetDB(yourDB) // 或者直接集成到您的项目配置中,由vigo.Flags 自动加载 type AppConfig struct { Vbase any } var Config = *AppConfig{ Vbase: vbase.Config, } ``` --- ## 2. 详细集成方案 ### 2.1 路由集成 VBase 提供了一个标准的 `vigo.Router` 实例,包含所有用户、组织、权限相关的 API。 ```go package main import ( "github.com/veypi/vbase" "github.com/veypi/vigo" ) var Router = vigo.NewRouter() func init() { // 1. 挂载 VBase 路由 // 建议挂载在独立的前缀下,避免路由冲突 Router.Extend("/vb", vbase.Router) } ``` ### 2.2 权限系统集成 VBase 提供了强大的 RBAC (基于角色的访问控制) 权限系统。 #### 2.2.1 初始化应用权限 在您的应用中,使用 `vbase.Auth.New` 创建应用专属的权限实例。 ```go import ( "github.com/veypi/vbase" "github.com/veypi/vbase/models" ) // 定义您的应用权限实例 var AppAuth = vbase.Auth.New("my_app", models.AppConfig{ Name: "My Application", Description: "我的应用描述", // 定义应用的默认角色 DefaultRoles: []models.RoleDefinition{ { Code: "admin", Name: "管理员", Policies: []string{"*:*"}, // 拥有所有权限 }, { Code: "editor", Name: "编辑", Policies: []string{"article:create", "article:update"}, }, }, }) ``` #### 2.2.2 使用权限中间件 使用 `vbase.AuthMiddleware` 进行认证,并结合 `AppAuth.Perm` 进行权限检查。 ```go func init() { // 1. 全局认证中间件 (解析 Token, 注入 user_id, org_id) Router.Use(vbase.AuthMiddleware()) Router.Get("/info", "获取app信息", vigo.SkipBefore, getInfo) // 2. 路由权限控制 // 检查 "article:create" 权限 Router.Post("/articles", "发布文章", AppAuth.Perm("article:create"), createArticle) // 检查资源所有权 (确保用户只能修改自己的文章) // 检查 "article:update" 权限,且文章的 owner_id 必须等于当前用户 ID Router.Patch("/articles/{id}", "更新文章", AppAuth.PermWithOwner("article:update", "id"), updateArticle) } ``` ### 2.3 配置管理 VBase 允许自定义部分配置。 ```go import "github.com/veypi/vbase" func main() { // 获取配置单例 cfg := vbase.Config // 启用调试模式 cfg.Debug = true // 设置 JWT 密钥 (建议从环境变量读取) cfg.JwtSecret = "your-secret-key" // 自定义短信服务提供商 (可选) // vbase.Config.SetSmsProvider(...) } ``` ### 2.4 上下文使用 通过 `vbase.AuthMiddleware` 认证后,您可以在 Handler 中通过 `*vigo.X` 获取用户信息。 ```go func MyHandler(x *vigo.X) error { // 获取当前用户 ID userID := x.Get("user_id").(string) // 获取当前组织 ID (如果有) orgID := x.Get("org_id").(string) // ... 业务逻辑 } ```