删除服务端材质渲染功能及system_config表,转为环境变量配置,初步配置管理员功能

This commit is contained in:
2025-12-08 19:12:30 +08:00
parent 399e6f096f
commit 9b0a60033e
37 changed files with 1135 additions and 3913 deletions

View File

@@ -12,36 +12,41 @@ import (
const (
defaultAdminUsername = "admin"
defaultAdminEmail = "admin@example.com"
defaultAdminPassword = "admin123456" // 首次登录后请立即修改
defaultAdminPassword = "admin123456" // 首次登录后请立即修改,部署到生产环境后删除
)
// defaultSystemConfigs 默认系统配置
var defaultSystemConfigs = []model.SystemConfig{
{Key: "site_name", Value: "CarrotSkin", Description: "网站名称", Type: model.ConfigTypeString, IsPublic: true},
{Key: "site_description", Value: "一个优秀的Minecraft皮肤站", Description: "网站描述", Type: model.ConfigTypeString, IsPublic: true},
{Key: "registration_enabled", Value: "true", Description: "是否允许用户注册", Type: model.ConfigTypeBoolean, IsPublic: true},
{Key: "checkin_reward", Value: "10", Description: "签到奖励积分", Type: model.ConfigTypeInteger, IsPublic: true},
{Key: "texture_download_reward", Value: "1", Description: "材质被下载奖励积分", Type: model.ConfigTypeInteger, IsPublic: false},
{Key: "max_textures_per_user", Value: "50", Description: "每个用户最大材质数量", Type: model.ConfigTypeInteger, IsPublic: false},
{Key: "max_profiles_per_user", Value: "5", Description: "每个用户最大角色数量", Type: model.ConfigTypeInteger, IsPublic: false},
{Key: "default_avatar", Value: "", Description: "默认头像URL", Type: model.ConfigTypeString, IsPublic: true},
}
// defaultCasbinRules 默认Casbin权限规则
// 规则格式: {PType: "p", V0: "角色", V1: "资源", V2: "操作"}
// PType "p" 表示策略规则,"g" 表示角色继承
var defaultCasbinRules = []model.CasbinRule{
// 管理员拥有所有权限
// ==================== 管理员权限 ====================
// 管理员拥有所有权限(通配符)
{PType: "p", V0: "admin", V1: "*", V2: "*"},
// 普通用户权限
{PType: "p", V0: "user", V1: "texture", V2: "create"},
{PType: "p", V0: "user", V1: "texture", V2: "read"},
{PType: "p", V0: "user", V1: "texture", V2: "update_own"},
{PType: "p", V0: "user", V1: "texture", V2: "delete_own"},
{PType: "p", V0: "user", V1: "profile", V2: "create"},
{PType: "p", V0: "user", V1: "profile", V2: "read"},
{PType: "p", V0: "user", V1: "profile", V2: "update_own"},
{PType: "p", V0: "user", V1: "profile", V2: "delete_own"},
{PType: "p", V0: "user", V1: "user", V2: "update_own"},
// 角色继承admin 继承 user 的所有权限
// ==================== 普通用户权限 ====================
// --- 用户资源 (user) ---
{PType: "p", V0: "user", V1: "user", V2: "read_own"}, // 查看自己的信息
{PType: "p", V0: "user", V1: "user", V2: "update_own"}, // 更新自己的信息
// --- 材质资源 (texture) ---
{PType: "p", V0: "user", V1: "texture", V2: "read"}, // 查看材质(公开)
{PType: "p", V0: "user", V1: "texture", V2: "create"}, // 上传材质
{PType: "p", V0: "user", V1: "texture", V2: "update_own"}, // 更新自己的材质
{PType: "p", V0: "user", V1: "texture", V2: "delete_own"}, // 删除自己的材质
{PType: "p", V0: "user", V1: "texture", V2: "favorite"}, // 收藏材质
// --- 档案资源 (profile) ---
{PType: "p", V0: "user", V1: "profile", V2: "read"}, // 查看档案(公开)
{PType: "p", V0: "user", V1: "profile", V2: "create"}, // 创建档案
{PType: "p", V0: "user", V1: "profile", V2: "update_own"}, // 更新自己的档案
{PType: "p", V0: "user", V1: "profile", V2: "delete_own"}, // 删除自己的档案
// --- Yggdrasil资源 (yggdrasil) ---
{PType: "p", V0: "user", V1: "yggdrasil", V2: "auth"}, // Yggdrasil认证
{PType: "p", V0: "user", V1: "yggdrasil", V2: "reset_password"}, // 重置Yggdrasil密码
// ==================== 角色继承 ====================
// admin 继承 user 的所有权限
{PType: "g", V0: "admin", V1: "user"},
}
@@ -59,11 +64,6 @@ func Seed(logger *zap.Logger) error {
return err
}
// 初始化系统配置
if err := seedSystemConfigs(db, logger); err != nil {
return err
}
// 初始化Casbin权限规则
if err := seedCasbinRules(db, logger); err != nil {
return err
@@ -119,23 +119,6 @@ func seedAdminUser(db *gorm.DB, logger *zap.Logger) error {
return nil
}
// seedSystemConfigs 初始化系统配置
func seedSystemConfigs(db *gorm.DB, logger *zap.Logger) error {
for _, config := range defaultSystemConfigs {
// 使用 FirstOrCreate 避免重复插入
var existing model.SystemConfig
result := db.Where("key = ?", config.Key).First(&existing)
if result.Error == gorm.ErrRecordNotFound {
if err := db.Create(&config).Error; err != nil {
logger.Error("创建系统配置失败", zap.String("key", config.Key), zap.Error(err))
return err
}
logger.Info("创建系统配置", zap.String("key", config.Key))
}
}
return nil
}
// seedCasbinRules 初始化Casbin权限规则
func seedCasbinRules(db *gorm.DB, logger *zap.Logger) error {
for _, rule := range defaultCasbinRules {
@@ -153,4 +136,3 @@ func seedCasbinRules(db *gorm.DB, logger *zap.Logger) error {
}
return nil
}