diff --git a/app.go b/app.go index b4d95cf..9b29c25 100644 --- a/app.go +++ b/app.go @@ -59,6 +59,7 @@ func (app *app) initRouter() { admin := app.router.PathPrefix("/admin/").Subrouter() admin.HandleFunc("/unpublish", app.handler(banHouse)).Methods("POST").Name("unpublish") + admin.HandleFunc("/republish", app.handler(unbanHouse)).Methods("POST").Name("republish") app.router.HandleFunc("/", app.handler(getEditor)).Methods("GET").Name("index") app.router.HandleFunc("/edit/{house:[A-Za-z0-9.-]{8}}.html", app.handler(getEditor)).Methods("GET").Name("edit") diff --git a/construction.go b/construction.go index 6e0e0f1..398afa2 100644 --- a/construction.go +++ b/construction.go @@ -354,3 +354,21 @@ func banHouse(app *app, w http.ResponseWriter, r *http.Request) error { fmt.Fprintf(w, "BOOM! %s banned.", houseID) return nil } + +func unbanHouse(app *app, w http.ResponseWriter, r *http.Request) error { + houseID := r.FormValue("house") + pass := r.FormValue("pass") + if app.cfg.AdminPass != pass { + w.WriteHeader(http.StatusNotFound) + return nil + } + + _, err := app.db.Exec("UPDATE publichouses SET approved = 1 WHERE house_id = ?", houseID) + if err != nil { + fmt.Fprintf(w, "Couldn't ban house: %v", err) + return err + } + + fmt.Fprintf(w, "boom. Ban on %s reversed.", houseID) + return nil +}