/* Package routes 包含系统的所有路由配置 用户路由模块负责定义所有与用户管理相关的 API 接口路由,包括: - 用户基础管理:增删改查、密码管理、状态管理 - 用户信息查询:个人信息、用户列表 - 企业 IM 同步:钉钉、企业微信、飞书用户同步 - LDAP 同步:OpenLDAP 与数据库之间的用户同步 路由安全策略: - 所有用户管理接口都需要 JWT 认证 - 所有接口都需要通过 Casbin 权限验证 - 不同操作需要不同的角色权限 */ package routes import ( "github.com/eryajf/go-ldap-admin/controller" "github.com/eryajf/go-ldap-admin/middleware" jwt "github.com/appleboy/gin-jwt/v2" "github.com/gin-gonic/gin" ) // InitUserRoutes 初始化用户管理相关路由 // 该函数注册所有与用户管理相关的 API 接口,包括基础的 CRUD 操作和企业 IM 同步功能 // // 中间件说明: // - JWT 认证中间件:验证用户登录状态,确保只有登录用户才能访问 // - Casbin 权限中间件:基于 RBAC 模型验证用户是否有权限执行特定操作 // // 参数: // - r: Gin 路由组,用于注册路由 // - authMiddleware: JWT 认证中间件实例 // // 返回值: // - gin.IRoutes: 返回路由接口,支持链式调用 func InitUserRoutes(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) gin.IRoutes { // 创建用户路由组 user := r.Group("/user") // ==================== 中间件配置 ==================== // 启用 JWT 认证中间件,确保用户已登录 user.Use(authMiddleware.MiddlewareFunc()) // 启用 Casbin 权限控制中间件,进行细粒度权限验证 user.Use(middleware.CasbinMiddleware()) // ==================== 用户基础管理接口 ==================== { // 用户信息查询接口 user.GET("/info", controller.User.GetUserInfo) // 获取当前登录用户详细信息 user.GET("/list", controller.User.List) // 获取用户列表(支持分页和筛选) // 用户管理接口 user.POST("/add", controller.User.Add) // 创建新用户(同时在 MySQL 和 LDAP 中创建) user.POST("/update", controller.User.Update) // 更新用户信息(同步更新 MySQL 和 LDAP) user.POST("/delete", controller.User.Delete) // 删除用户(同时从 MySQL 和 LDAP 中删除) // 用户账户管理接口 user.POST("/changePwd", controller.User.ChangePwd) // 修改用户密码(支持管理员修改和用户自助修改) user.POST("/changeUserStatus", controller.User.ChangeUserStatus) // 修改用户状态(启用/禁用账户) // ==================== 企业 IM 同步接口 ==================== // 第三方平台用户同步到本系统 user.POST("/syncDingTalkUsers", controller.User.SyncDingTalkUsers) // 从钉钉同步用户到平台 user.POST("/syncWeComUsers", controller.User.SyncWeComUsers) // 从企业微信同步用户到平台 user.POST("/syncFeiShuUsers", controller.User.SyncFeiShuUsers) // 从飞书同步用户到平台 // LDAP 与数据库之间的同步 user.POST("/syncOpenLdapUsers", controller.User.SyncOpenLdapUsers) // 从 OpenLDAP 同步用户到数据库 user.POST("/syncSqlUsers", controller.User.SyncSqlUsers) // 从数据库同步用户到 OpenLDAP } return r }