mirror of
https://github.com/writeas/htmlhouse
synced 2025-07-18 21:08:16 +00:00
Support admin banning
This commit is contained in:
parent
74aa193613
commit
1b2961c3a1
3
app.go
3
app.go
@ -57,6 +57,9 @@ func (app *app) initRouter() {
|
||||
api.HandleFunc("/create", app.handler(createHouse)).Methods("POST").Name("create")
|
||||
api.HandleFunc("/{house:[A-Za-z0-9.-]{8}}", app.handler(renovateHouse)).Methods("POST").Name("update")
|
||||
|
||||
admin := app.router.PathPrefix("/admin/").Subrouter()
|
||||
admin.HandleFunc("/unpublish", app.handler(banHouse)).Methods("POST").Name("unpublish")
|
||||
|
||||
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")
|
||||
app.router.HandleFunc("/stats/{house:[A-Za-z0-9.-]{8}}.html", app.handler(viewHouseStats)).Methods("GET").Name("stats")
|
||||
|
@ -17,7 +17,8 @@ type config struct {
|
||||
|
||||
ServerPort int `env:"key=PORT default=8080"`
|
||||
|
||||
AutoApprove bool `env:"key=AUTO_APPROVE default=false"`
|
||||
AutoApprove bool `env:"key=AUTO_APPROVE default=false"`
|
||||
AdminPass string `env:"key=ADMIN_PASS default=uhoh"`
|
||||
}
|
||||
|
||||
func newConfig() (*config, error) {
|
||||
|
@ -50,9 +50,23 @@ func validTitle(title string) bool {
|
||||
}
|
||||
|
||||
func removePublicAccess(app *app, houseID string) error {
|
||||
_, err := app.db.Exec("DELETE FROM publichouses WHERE house_id = ?", houseID)
|
||||
if err != nil {
|
||||
return err
|
||||
var approved sql.NullInt64
|
||||
err := app.db.QueryRow("SELECT approved FROM houses WHERE id = ?", houseID).Scan(&approved)
|
||||
switch {
|
||||
case err == sql.ErrNoRows:
|
||||
return nil
|
||||
case err != nil:
|
||||
fmt.Printf("Couldn't fetch for public removal: %v\n", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
if approved.Valid && approved.Int64 == 0 {
|
||||
// Page has been banned, so do nothing
|
||||
} else {
|
||||
_, err = app.db.Exec("DELETE FROM publichouses WHERE house_id = ?", houseID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
@ -322,3 +336,21 @@ func isHousePublic(app *app, houseID string) bool {
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func banHouse(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 = 0 WHERE house_id = ?", houseID)
|
||||
if err != nil {
|
||||
fmt.Fprintf(w, "Couldn't ban house: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Fprintf(w, "BOOM! %s banned.", houseID)
|
||||
return nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user