This commit is contained in:
toom1996
2026-09-02 21:51:35 +08:00
parent 2562fc4aaa
commit 1fd9c48f58
22 changed files with 908 additions and 30 deletions

View File

@ -62,34 +62,46 @@ func main() {
log.Println("✓ users 表就绪")
// 2. 预置内部账号
const username = "admin"
const email = "admin@studio.local"
password := os.Getenv("SEED_ADMIN_PASSWORD")
if password == "" {
password = "Studio#2026!Admin"
// admin: 正式内部账号,密码取环境变量 SEED_ADMIN_PASSWORD(缺省回落强密码常量)。
// root: 测试账号,固定弱密码 root,仅供本地联调使用,勿用于生产。
adminPassword := os.Getenv("SEED_ADMIN_PASSWORD")
if adminPassword == "" {
adminPassword = "Studio#2026!Admin"
}
hash, e := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if e != nil {
log.Fatalf("✗ 生成密码哈希失败: %v", e)
accounts := []struct {
username string
email string
password string
}{
{username: "admin", email: "admin@studio.local", password: adminPassword},
{username: "root", email: "root@studio.local", password: "root"},
}
var existing model.User
qerr := db.Where("username = ?", username).First(&existing).Error
switch {
case errors.Is(qerr, gorm.ErrRecordNotFound):
user := model.User{Username: username, Email: email, PasswordHash: string(hash)}
if cerr := db.Create(&user).Error; cerr != nil {
log.Fatalf("✗ 创建内部账号失败: %v", cerr)
for _, acc := range accounts {
hash, e := bcrypt.GenerateFromPassword([]byte(acc.password), bcrypt.DefaultCost)
if e != nil {
log.Fatalf("✗ 生成密码哈希失败(%s): %v", acc.username, e)
}
log.Printf("✓ 已创建内部账号: %s / %s", username, email)
case qerr != nil:
log.Fatalf("✗ 查询账号失败: %v", qerr)
default:
existing.PasswordHash = string(hash)
if uerr := db.Save(&existing).Error; uerr != nil {
log.Fatalf("✗ 更新账号密码失败: %v", uerr)
var existing model.User
qerr := db.Where("username = ?", acc.username).First(&existing).Error
switch {
case errors.Is(qerr, gorm.ErrRecordNotFound):
user := model.User{Username: acc.username, Email: acc.email, PasswordHash: string(hash)}
if cerr := db.Create(&user).Error; cerr != nil {
log.Fatalf("✗ 创建内部账号失败(%s): %v", acc.username, cerr)
}
log.Printf("✓ 已创建内部账号: %s / %s", acc.username, acc.email)
case qerr != nil:
log.Fatalf("✗ 查询账号失败(%s): %v", acc.username, qerr)
default:
existing.PasswordHash = string(hash)
if uerr := db.Save(&existing).Error; uerr != nil {
log.Fatalf("✗ 更新账号密码失败(%s): %v", acc.username, uerr)
}
log.Printf("✓ 内部账号已存在,已刷新密码哈希: %s", acc.username)
}
log.Printf("✓ 内部账号已存在,已刷新密码哈希: %s", username)
log.Printf("ℹ 账号 %s 登录方式: %s / 密码: %s", acc.username, acc.username, acc.password)
}
log.Printf("ℹ 登录账号: %s 密码: %s(请尽快修改默认密码)", username, password)
log.Println("⚠ admin 为强密码账号请尽快改默认密码;root 为弱密码测试账号,仅本地使用")
}