mirror of
https://github.com/rls-moe/nyx
synced 2024-11-14 22:12:24 +00:00
75 lines
1.5 KiB
Go
75 lines
1.5 KiB
Go
package admin
|
|
|
|
import (
|
|
"go.rls.moe/nyx/http/errw"
|
|
"go.rls.moe/nyx/http/middle"
|
|
"strconv"
|
|
"go.rls.moe/nyx/resources"
|
|
"fmt"
|
|
"net/http"
|
|
"github.com/tidwall/buntdb"
|
|
)
|
|
|
|
func handleDelPost(w http.ResponseWriter, r *http.Request) {
|
|
sess := middle.GetSession(r)
|
|
if sess == nil {
|
|
w.WriteHeader(http.StatusUnauthorized)
|
|
w.Write([]byte("Unauthorized"))
|
|
return
|
|
}
|
|
if sess.CAttr("mode") != "admin" && sess.CAttr("mode") != "mod" {
|
|
w.WriteHeader(http.StatusUnauthorized)
|
|
w.Write([]byte("Unauthorized"))
|
|
return
|
|
}
|
|
|
|
err := r.ParseForm()
|
|
if err != nil {
|
|
errw.ErrorWriter(err, w, r)
|
|
return
|
|
}
|
|
|
|
rid, err := strconv.Atoi(r.FormValue("reply_id"))
|
|
if err != nil {
|
|
errw.ErrorWriter(err, w, r)
|
|
return
|
|
}
|
|
trid, err := strconv.Atoi(r.FormValue("thread_id"))
|
|
if err != nil {
|
|
errw.ErrorWriter(err, w, r)
|
|
return
|
|
}
|
|
board := r.FormValue("board")
|
|
|
|
if sess.CAttr("mode") == "mod" && sess.CAttr("board") != board {
|
|
w.WriteHeader(http.StatusUnauthorized)
|
|
w.Write([]byte("Not on this board"))
|
|
return
|
|
}
|
|
|
|
db := middle.GetDB(r)
|
|
|
|
err = db.Update(func(tx *buntdb.Tx) error {
|
|
reply, err := resources.GetReply(tx, r.Host, board, trid, rid)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
reply.Text = "[deleted]"
|
|
reply.Metadata["deleted"] = "yes"
|
|
reply.Image = nil
|
|
reply.Thumbnail = nil
|
|
err = resources.UpdateReply(tx, r.Host, board, reply)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
})
|
|
|
|
if err != nil {
|
|
errw.ErrorWriter(err, w, r)
|
|
return
|
|
}
|
|
|
|
http.Redirect(w, r, fmt.Sprintf("/%s/%d/thread.html", board, trid), http.StatusSeeOther)
|
|
}
|