- 修复登录参数 username→account - 修复前后端字段名不匹配 (ticketno/contactname/createtime等) - 修复AI分析GLM返回markdown包裹和priority类型问题 - 添加AutoMigrate自动建表 - 统一API路由为 /api/auth/ 前缀 - 添加config.example.yaml,.gitignore排除config.yaml
60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
package middleware
|
|
|
|
import (
|
|
"github.com/casehub/ticket-workbench/internal/model"
|
|
"github.com/casehub/ticket-workbench/internal/service"
|
|
"github.com/gin-gonic/gin"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func Auth(db *gorm.DB) gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
sessionID := extractSessionID(c)
|
|
if sessionID == "" {
|
|
c.JSON(200, map[string]interface{}{"success": false, "retcode": -1, "retinfo": "未登录"})
|
|
c.Abort()
|
|
return
|
|
}
|
|
|
|
user := service.GetUserBySession(sessionID)
|
|
if user == nil {
|
|
c.JSON(200, map[string]interface{}{"success": false, "retcode": -1, "retinfo": "登录已过期"})
|
|
c.Abort()
|
|
return
|
|
}
|
|
|
|
c.Set("userid", user.Userid)
|
|
c.Set("username", user.Username)
|
|
c.Set("account", user.Account)
|
|
c.Set("role", user.Role)
|
|
c.Set("team", user.Team)
|
|
c.Next()
|
|
}
|
|
}
|
|
|
|
func extractSessionID(c *gin.Context) string {
|
|
if s := c.GetHeader("Authorization"); s != "" {
|
|
return s
|
|
}
|
|
if s := c.GetHeader("jsessionid"); s != "" {
|
|
return s
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func GetCurrentUser(c *gin.Context) *model.TicketUser {
|
|
userid, exists := c.Get("userid")
|
|
if !exists {
|
|
return nil
|
|
}
|
|
username, _ := c.Get("username")
|
|
role, _ := c.Get("role")
|
|
team, _ := c.Get("team")
|
|
return &model.TicketUser{
|
|
Userid: userid.(int),
|
|
Username: username.(string),
|
|
Role: role.(int16),
|
|
Team: team.(string),
|
|
}
|
|
}
|