Add Go rewrite with Postgres 17 and Dokploy Docker Compose
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"amnezia-share/internal/models"
|
||||
"amnezia-share/internal/web"
|
||||
)
|
||||
|
||||
type adminRenewalView struct {
|
||||
adminLayout
|
||||
Codes []models.RenewalCode
|
||||
}
|
||||
|
||||
// AdminRenewalGet lists renewal codes (admin/renewal_codes.php GET).
|
||||
func AdminRenewalGet(a *web.App) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
ok, errText := flashFromQuery(r)
|
||||
view := adminRenewalView{adminLayout: newAdminLayout(a, r, "renewal")}
|
||||
view.OK, view.Error = ok, errText
|
||||
codes, err := a.Share.ListCodes(r.Context())
|
||||
if err != nil {
|
||||
view.Error = err.Error()
|
||||
}
|
||||
view.Codes = codes
|
||||
a.Render(w, r, "page_admin_renewal", view)
|
||||
}
|
||||
}
|
||||
|
||||
// AdminRenewalPost handles renewal code create/delete (admin/renewal_codes.php
|
||||
// POST).
|
||||
func AdminRenewalPost(a *web.App) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
var err error
|
||||
var okMsg string
|
||||
|
||||
switch r.FormValue("action") {
|
||||
case "create":
|
||||
code := r.FormValue("code")
|
||||
addDays := formInt(r, "add_days", 30)
|
||||
maxUses := formInt(r, "max_uses", 1)
|
||||
target := strings.TrimSpace(r.FormValue("code_target"))
|
||||
note := r.FormValue("note")
|
||||
expiresAt := parseFormDate(r.FormValue("code_expires_at"))
|
||||
|
||||
var linkID *int
|
||||
if target != "member" {
|
||||
if v := formInt(r, "share_link_id", 0); v > 0 {
|
||||
linkID = &v
|
||||
}
|
||||
}
|
||||
|
||||
created, cerr := a.Share.CreateRenewalCode(ctx, code, addDays, maxUses, linkID, expiresAt, note, target)
|
||||
err = cerr
|
||||
if err == nil {
|
||||
okMsg = "Код создан: " + created.Code
|
||||
}
|
||||
|
||||
case "delete":
|
||||
id := formInt(r, "code_id", 0)
|
||||
err = a.Share.DeleteCode(ctx, id)
|
||||
if err == nil {
|
||||
okMsg = "Код удалён."
|
||||
}
|
||||
|
||||
default:
|
||||
err = errUnknownAction
|
||||
}
|
||||
|
||||
errText := ""
|
||||
if err != nil {
|
||||
errText = err.Error()
|
||||
}
|
||||
redirectWithFlash(w, r, a, "admin/renewal", okMsg, errText)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user