feat(auth): 完整认证系统 — 注册/登录/JWT/路由(Task 4 + Task 5)
Task 4 — 认证服务层: - pkg/utils/password.go: bcrypt 密码加密与校验 - pkg/utils/jwt.go: Access/Refresh Token 生成与解析(jwt/v5@v5.2.1,兼容 Go 1.23) - app/dto/auth_dto.go: 认证相关请求/响应 DTO(含参数校验 binding tag) - app/auth/service/auth_service.go: 核心业务逻辑(注册、登录、管理员登录、Token 刷新、个人信息、改密码) - pkg/middleware/auth.go: JWT 认证中间件 + 角色权限检查中间件 Task 5 — Controller 与路由注册: - app/auth/controller/auth_controller.go: 前台认证接口(7 个 API) - app/auth/controller/admin_auth_controller.go: 后台管理认证接口 - app/auth/router.go: auth 模块路由定义(模块自包含) - router/router.go: 主路由汇总入口(仅做调度,不含具体路由定义) - cmd/server/main.go: 路由注册迁移到 router.Setup() 已验证全部接口:注册 ✓ 登录 ✓ 获取 profile ✓ 错误密码 ✓ 未认证拒绝 ✓ 非管理员拒绝 ✓ Made-with: Cursor
This commit is contained in:
@@ -3,12 +3,13 @@ package model
|
||||
import "time"
|
||||
|
||||
// Role 角色表模型,对应 auth_roles 表
|
||||
// 系统预置三种角色:user(普通用户)、admin(管理员)、super_admin(超级管理员)
|
||||
type Role struct {
|
||||
ID int `json:"id" gorm:"primaryKey;autoIncrement"`
|
||||
Code string `json:"code" gorm:"uniqueIndex;size:50;not null"` // 角色代码: user/admin/super_admin
|
||||
Name string `json:"name" gorm:"size:50;not null"` // 角色显示名称
|
||||
Description string `json:"description" gorm:"size:200;default:''"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"not null;autoCreateTime"`
|
||||
ID int `json:"id" gorm:"primaryKey;autoIncrement"` // 角色唯一标识,自增主键
|
||||
Code string `json:"code" gorm:"uniqueIndex;size:50;not null"` // 角色代码,全局唯一,如 user/admin/super_admin(对应 constants.RoleCode*)
|
||||
Name string `json:"name" gorm:"size:50;not null"` // 角色中文显示名称,如「普通用户」「管理员」
|
||||
Description string `json:"description" gorm:"size:200;default:''"` // 角色描述说明,用于后台管理界面展示
|
||||
CreatedAt time.Time `json:"created_at" gorm:"not null;autoCreateTime"` // 创建时间,由 GORM 自动填充
|
||||
}
|
||||
|
||||
// TableName 指定数据库表名
|
||||
@@ -17,10 +18,11 @@ func (Role) TableName() string {
|
||||
}
|
||||
|
||||
// UserRole 用户角色关联表模型,对应 auth_user_roles 表
|
||||
// 采用联合主键(user_id + role_id),一个用户可拥有多个角色
|
||||
type UserRole struct {
|
||||
UserID int64 `json:"user_id" gorm:"primaryKey"`
|
||||
RoleID int `json:"role_id" gorm:"primaryKey"`
|
||||
CreatedAt time.Time `json:"created_at" gorm:"not null;autoCreateTime"`
|
||||
UserID int64 `json:"user_id" gorm:"primaryKey"` // 关联的用户 ID,外键指向 auth_users.id
|
||||
RoleID int `json:"role_id" gorm:"primaryKey"` // 关联的角色 ID,外键指向 auth_roles.id
|
||||
CreatedAt time.Time `json:"created_at" gorm:"not null;autoCreateTime"` // 角色分配时间,由 GORM 自动填充
|
||||
}
|
||||
|
||||
// TableName 指定数据库表名
|
||||
|
||||
Reference in New Issue
Block a user