package v1 import "github.com/gogf/gf/v2/frame/g" // AdminLoginReq 管理后台登录请求 type AdminLoginReq struct { g.Meta `path:"/auth/login" method:"post" mime:"json" tags:"管理后台-认证" summary:"管理员登录" group:"public" middleware:"-"` Username string `json:"username" v:"required#请输入用户名" dc:"用户名"` Password string `json:"password" v:"required#请输入密码" dc:"密码"` CaptchaKey string `json:"captcha_key" dc:"验证码key(验证码启用时必填)"` CaptchaX int `json:"captcha_x" dc:"滑块X坐标(验证码启用时必填)"` } type AdminLoginRes struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` ExpiresAt string `json:"expires_at"` TotpRequired bool `json:"totp_required"` // 是否需要 2FA 验证 ProvisionalToken string `json:"provisional_token,omitempty"` // 2FA 临时令牌(totp_required=true 时返回) User struct { ID int64 `json:"id"` Username string `json:"username"` DisplayName string `json:"display_name"` Role string `json:"role"` } `json:"user"` // Permissions 是该账号的有效权限点(角色并集 ∪ 特批)。前端据此渲染菜单与按钮; // 后端鉴权始终以数据库/缓存为准,这里只影响展示。 Permissions []string `json:"permissions"` Roles []AdminRoleBrief `json:"roles"` // 已分配角色(超管为空数组) PendingAgreements []*LoginPendingAgreement `json:"pending_agreements,omitempty"` // 待接受协议列表 } // AdminMeReq 当前登录用户信息(权限刷新用) // // 权限变更后,已登录用户此前需要重新登录才能拿到新权限。前端在应用启动与 token 刷新后 // 调用本接口刷新,使菜单与按钮跟上最新权限。 type AdminMeReq struct { g.Meta `path:"/auth/me" method:"get" mime:"json" tags:"管理后台-认证" summary:"当前登录用户信息与有效权限"` } // AdminMeRes 当前登录用户信息响应 type AdminMeRes struct { ID int64 `json:"id"` Username string `json:"username"` DisplayName string `json:"display_name"` Email string `json:"email"` Role string `json:"role"` Permissions []string `json:"permissions"` Roles []AdminRoleBrief `json:"roles"` } // LoginPendingAgreement 登录时返回的待接受协议信息 type LoginPendingAgreement struct { Id int64 `json:"id"` Code string `json:"code"` Title string `json:"title"` Version string `json:"version"` } // AdminLogoutReq 管理后台登出请求 type AdminLogoutReq struct { g.Meta `path:"/auth/logout" method:"post" mime:"json" tags:"管理后台-认证" summary:"管理员登出"` } type AdminLogoutRes struct{} // AdminRefreshReq 刷新 Token 请求 type AdminRefreshReq struct { g.Meta `path:"/auth/refresh" method:"post" mime:"json" tags:"管理后台-认证" summary:"刷新 Token" group:"public" middleware:"-"` RefreshToken string `json:"refresh_token" v:"required#请提供刷新令牌" dc:"刷新令牌"` } type AdminRefreshRes struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` ExpiresAt string `json:"expires_at"` } // AdminSessionListReq 活跃会话列表请求(查看所有管理员) type AdminSessionListReq struct { g.Meta `path:"/auth/sessions" method:"get" mime:"json" tags:"管理后台-认证" summary:"活跃会话列表"` Page int `json:"page" in:"query" d:"1" dc:"页码"` PageSize int `json:"page_size" in:"query" d:"20" dc:"每页数量"` Username string `json:"username" in:"query" dc:"用户名(模糊搜索)"` IpAddress string `json:"ip_address" in:"query" dc:"IP地址(模糊搜索)"` } type AdminSessionListRes struct { List []AdminSessionItem `json:"list"` Total int `json:"total"` Page int `json:"page"` PageSize int `json:"page_size"` } type AdminSessionItem struct { ID int64 `json:"id"` UserId int64 `json:"user_id"` Username string `json:"username"` DisplayName string `json:"display_name"` // Role 是会话所属账号的角色(super_admin / admin), // 前端据此隐藏非本人超管会话的撤销入口(后端另有 assertCanOperateSessions 兜底) Role string `json:"role"` IpAddress string `json:"ip_address"` DeviceInfo string `json:"device_info"` ExpiresAt string `json:"expires_at"` CreatedAt string `json:"created_at"` IsCurrent bool `json:"is_current"` } // AdminRevokeSessionReq 踢出指定会话请求 type AdminRevokeSessionReq struct { g.Meta `path:"/auth/sessions/{id}" method:"delete" mime:"json" tags:"管理后台-认证" summary:"踢出指定会话"` Id int64 `json:"id" in:"path" v:"required#请指定会话ID"` } type AdminRevokeSessionRes struct{} // AdminForceLogoutReq 强制下线指定用户请求 type AdminForceLogoutReq struct { g.Meta `path:"/auth/sessions/user/{id}" method:"delete" mime:"json" tags:"管理后台-认证" summary:"强制用户下线"` Id int64 `json:"id" in:"path" v:"required#请指定用户ID"` } type AdminForceLogoutRes struct{} // AdminChangePasswordReq 修改密码请求 type AdminChangePasswordReq struct { g.Meta `path:"/auth/change-password" method:"put" mime:"json" tags:"管理后台-认证" summary:"修改密码"` OldPassword string `json:"old_password" v:"required#请输入原密码" dc:"原密码"` NewPassword string `json:"new_password" v:"required|length:8,64#请输入新密码|密码长度为8-64位" dc:"新密码"` } type AdminChangePasswordRes struct{}