feat: implement multi-user credits redeem and storage isolation
This commit is contained in:
@@ -16,6 +16,8 @@ func main() {
|
||||
db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
|
||||
must(err)
|
||||
must(db.AutoMigrate(&Task{}, &Setting{}, &User{}, &UserPermission{}, &CreditAccount{}, &CreditTransaction{}, &CreditReservation{}, &RedeemBatch{}, &RedeemCode{}, &RedeemRecord{}, &WebDAVConfig{}, &Session{}, &AuditLog{}))
|
||||
// Replace the legacy global task uniqueness constraint with per-user uniqueness.
|
||||
must(db.Exec("DROP INDEX IF EXISTS idx_tasks_source_rid_quality").Error)
|
||||
|
||||
client := &http.Client{Timeout: 2 * 60 * 1e9}
|
||||
cfg := loadConfig(db)
|
||||
@@ -38,10 +40,20 @@ func main() {
|
||||
auth := api.Group("", a.requireAuth)
|
||||
auth.GET("/search", a.requirePermission(PermDownload), a.search)
|
||||
auth.GET("/tasks", a.requirePermission(PermDownload), a.listTasks)
|
||||
auth.GET("/credits", a.creditInfo)
|
||||
auth.POST("/redeem", a.requirePermission(PermRedeem), a.redeem)
|
||||
auth.GET("/webdav/config", a.requirePermission(PermWebDAVConfig), a.getUserWebDAV)
|
||||
auth.PUT("/webdav/config", a.requirePermission(PermWebDAVConfig), a.putUserWebDAV)
|
||||
auth.POST("/webdav/test", a.requirePermission(PermWebDAVConfig), a.testUserWebDAV)
|
||||
auth.POST("/tasks", a.requirePermission(PermDownload), a.addTask)
|
||||
auth.POST("/tasks/:id/retry", a.requirePermission(PermDownload), a.retryTask)
|
||||
auth.DELETE("/tasks/:id", a.requirePermission(PermDownload), a.deleteTask)
|
||||
admin := api.Group("/admin", a.requireAuth, a.requireAdmin)
|
||||
admin.GET("/users", a.adminListUsers)
|
||||
admin.POST("/users", a.adminCreateUser)
|
||||
admin.PUT("/users/:id", a.adminUpdateUser)
|
||||
admin.GET("/redeem", a.adminListRedeemBatches)
|
||||
admin.POST("/redeem", a.adminCreateRedeemBatch)
|
||||
admin.GET("/settings", a.getSettings)
|
||||
admin.PUT("/settings", a.putSettings)
|
||||
admin.POST("/webdav/test", a.testWebDAV)
|
||||
|
||||
Reference in New Issue
Block a user