79 lines
3.3 KiB
Go
79 lines
3.3 KiB
Go
/*
|
||
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
|
||
}
|