ldap-1-backend/routes/user_routes.go

79 lines
3.3 KiB
Go
Raw Normal View History

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
}