This commit is contained in:
parent
b2c0c1c231
commit
4ff660bc1f
|
|
@ -20,7 +20,13 @@ func GenerateLicenseHandler(db storage.Database) fiber.Handler {
|
||||||
return fiber.NewError(fiber.StatusBadRequest, "Missing machine ID")
|
return fiber.NewError(fiber.StatusBadRequest, "Missing machine ID")
|
||||||
}
|
}
|
||||||
|
|
||||||
// ⚠️ 此时不设置 Expiry 字段,由 Activate 阶段设置
|
// ✅ 检查是否已经生成过
|
||||||
|
if db.HasGenerated(req.MachineID) {
|
||||||
|
return fiber.NewError(fiber.StatusForbidden, "License already generated for this machine")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ❌ 不再接收客户端传的 Expiry,由后续激活阶段设置
|
||||||
|
req.Expiry = ""
|
||||||
|
|
||||||
payloadBytes, err := json.Marshal(req)
|
payloadBytes, err := json.Marshal(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -37,6 +43,9 @@ func GenerateLicenseHandler(db storage.Database) fiber.Handler {
|
||||||
Signature: signature,
|
Signature: signature,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ✅ 保存生成记录(避免重复)
|
||||||
|
db.SaveGenerated(req.MachineID, licenseFile.Payload+"."+licenseFile.Signature)
|
||||||
|
|
||||||
return c.JSON(licenseFile)
|
return c.JSON(licenseFile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,11 @@ func InitDB() Database {
|
||||||
machine_id TEXT UNIQUE,
|
machine_id TEXT UNIQUE,
|
||||||
license TEXT,
|
license TEXT,
|
||||||
activated INTEGER
|
activated INTEGER
|
||||||
|
)`)
|
||||||
|
db.Exec(`CREATE TABLE IF NOT EXISTS generations (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
machine_id TEXT UNIQUE,
|
||||||
|
license TEXT
|
||||||
)`)
|
)`)
|
||||||
return Database{db}
|
return Database{db}
|
||||||
}
|
}
|
||||||
|
|
@ -32,3 +37,15 @@ func (d Database) SaveActivation(machineID string, licenseText string) {
|
||||||
d.db.Exec("INSERT OR REPLACE INTO activations(machine_id, license, activated) VALUES (?, ?, 1)",
|
d.db.Exec("INSERT OR REPLACE INTO activations(machine_id, license, activated) VALUES (?, ?, 1)",
|
||||||
machineID, licenseText)
|
machineID, licenseText)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d Database) HasGenerated(machineID string) bool {
|
||||||
|
row := d.db.QueryRow("SELECT license FROM generations WHERE machine_id = ?", machineID)
|
||||||
|
var license string
|
||||||
|
err := row.Scan(&license)
|
||||||
|
return err == nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d Database) SaveGenerated(machineID string, licenseText string) {
|
||||||
|
d.db.Exec("INSERT OR REPLACE INTO generations(machine_id, license) VALUES (?, ?)",
|
||||||
|
machineID, licenseText)
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue