feat: 后端认证和工具模块更新

- main.go: 添加 Swagger 文档、初始化默认管理员
- 认证模块: 完善用户角色管理
- 新增工具模块: tool_handler, tool_repo, tool_service, tool model
- 更新 go.mod 依赖

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 14:25:55 +08:00
parent e34d4bcd37
commit ecb885ee5e
13 changed files with 8912 additions and 40 deletions

View File

@@ -1,6 +1,7 @@
package model
import (
"encoding/json"
"time"
)
@@ -16,11 +17,11 @@ const (
// Role 角色
type Role struct {
ID string `json:"id" gorm:"primaryKey"`
Name string `json:"name" gorm:"uniqueIndex"`
Permissions []PermissionLevel `json:"permissions" gorm:"type:int[]"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ID string `json:"id" gorm:"primaryKey"`
Name string `json:"name" gorm:"uniqueIndex"`
Permissions string `json:"permissions" gorm:"type:text"` // 存储 JSON 格式的权限数组
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
// User 用户
@@ -41,8 +42,13 @@ func (u *User) HasPermission(level PermissionLevel) bool {
if u.Role == nil {
return false
}
for _, p := range u.Role.Permissions {
if p >= level {
// 解析 JSON 格式的权限
var perms []int
if err := json.Unmarshal([]byte(u.Role.Permissions), &perms); err != nil {
return false
}
for _, p := range perms {
if PermissionLevel(p) >= level {
return true
}
}