新增: AI工单处理工作台 v1.0
- Go Gin 后端 (19个源文件): 认证、工单CRUD、GLM AI分析、状态流转、备注、操作日志 - Arco Design Vue 前端: 登录、工单列表/详情/创建、AI分析触发与确认 - MySQL 5表: ticket_user/ticket_info/ticket_ai_analysis/ticket_operation_log/ticket_note - 部署: tk.1216.top HTTPS, Nginx反代
This commit is contained in:
58
backend/internal/middleware/auth.go
Normal file
58
backend/internal/middleware/auth.go
Normal file
@@ -0,0 +1,58 @@
|
||||
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("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),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user