ldap-1-backend/routes/user_routes.go

79 lines
3.3 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
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
}