Преглед изворни кода

Support admin banning

tags/v1.0
Matt Baer пре 8 година
родитељ
комит
1b2961c3a1
3 измењених фајлова са 40 додато и 4 уклоњено
  1. +3
    -0
      app.go
  2. +2
    -1
      config.go
  3. +35
    -3
      construction.go

+ 3
- 0
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")


+ 2
- 1
config.go Прегледај датотеку

@@ -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) {


+ 35
- 3
construction.go Прегледај датотеку

@@ -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…
Откажи
Сачувај