2025-08-26 00:43:50 +08:00
|
|
|
|
/*
|
|
|
|
|
Package routes 包含系统的所有路由配置
|
|
|
|
|
|
|
|
|
|
用户路由模块负责定义所有与用户管理相关的 API 接口路由,包括:
|
|
|
|
|
- 用户基础管理:增删改查、密码管理、状态管理
|
|
|
|
|
- 用户信息查询:个人信息、用户列表
|
|
|
|
|
- 企业 IM 同步:钉钉、企业微信、飞书用户同步
|
|
|
|
|
- LDAP 同步:OpenLDAP 与数据库之间的用户同步
|
|
|
|
|
|
|
|
|
|
路由安全策略:
|
|
|
|
|
- 所有用户管理接口都需要 JWT 认证
|
|
|
|
|
- 所有接口都需要通过 Casbin 权限验证
|
|
|
|
|
- 不同操作需要不同的角色权限
|
|
|
|
|
*/
|
2022-05-18 17:57:03 +08:00
|
|
|
|
package routes
|
|
|
|
|
|
|
|
|
|
import (
|
2022-05-29 10:06:21 +08:00
|
|
|
|
"github.com/eryajf/go-ldap-admin/controller"
|
|
|
|
|
"github.com/eryajf/go-ldap-admin/middleware"
|
2022-05-18 17:57:03 +08:00
|
|
|
|
|
|
|
|
|
jwt "github.com/appleboy/gin-jwt/v2"
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
)
|
|
|
|
|
|
2025-08-26 00:43:50 +08:00
|
|
|
|
// InitUserRoutes 初始化用户管理相关路由
|
|
|
|
|
// 该函数注册所有与用户管理相关的 API 接口,包括基础的 CRUD 操作和企业 IM 同步功能
|
|
|
|
|
//
|
|
|
|
|
// 中间件说明:
|
|
|
|
|
// - JWT 认证中间件:验证用户登录状态,确保只有登录用户才能访问
|
|
|
|
|
// - Casbin 权限中间件:基于 RBAC 模型验证用户是否有权限执行特定操作
|
|
|
|
|
//
|
|
|
|
|
// 参数:
|
|
|
|
|
// - r: Gin 路由组,用于注册路由
|
|
|
|
|
// - authMiddleware: JWT 认证中间件实例
|
|
|
|
|
//
|
|
|
|
|
// 返回值:
|
|
|
|
|
// - gin.IRoutes: 返回路由接口,支持链式调用
|
2022-05-18 17:57:03 +08:00
|
|
|
|
func InitUserRoutes(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) gin.IRoutes {
|
2025-08-26 00:43:50 +08:00
|
|
|
|
// 创建用户路由组
|
2022-05-18 17:57:03 +08:00
|
|
|
|
user := r.Group("/user")
|
2025-08-26 00:43:50 +08:00
|
|
|
|
|
|
|
|
|
// ==================== 中间件配置 ====================
|
|
|
|
|
|
|
|
|
|
// 启用 JWT 认证中间件,确保用户已登录
|
2022-05-18 17:57:03 +08:00
|
|
|
|
user.Use(authMiddleware.MiddlewareFunc())
|
2025-08-26 00:43:50 +08:00
|
|
|
|
|
|
|
|
|
// 启用 Casbin 权限控制中间件,进行细粒度权限验证
|
2022-05-18 17:57:03 +08:00
|
|
|
|
user.Use(middleware.CasbinMiddleware())
|
2025-08-26 00:43:50 +08:00
|
|
|
|
|
|
|
|
|
// ==================== 用户基础管理接口 ====================
|
2022-05-18 17:57:03 +08:00
|
|
|
|
{
|
2025-08-26 00:43:50 +08:00
|
|
|
|
// 用户信息查询接口
|
|
|
|
|
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
|
2022-05-18 17:57:03 +08:00
|
|
|
|
}
|
2025-08-26 00:43:50 +08:00
|
|
|
|
|
2022-05-18 17:57:03 +08:00
|
|
|
|
return r
|
|
|
|
|
}
|