64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package photo
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"code.nonshy.com/nonshy/website/pkg/models"
|
|
"code.nonshy.com/nonshy/website/pkg/session"
|
|
"code.nonshy.com/nonshy/website/pkg/templates"
|
|
)
|
|
|
|
// User endpoint to flag other photos as explicit on their behalf.
|
|
func MarkPhotoExplicit() http.HandlerFunc {
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
var (
|
|
photoID uint64
|
|
next = r.FormValue("next")
|
|
)
|
|
|
|
if !strings.HasPrefix(next, "/") {
|
|
next = "/"
|
|
}
|
|
|
|
// Get current user.
|
|
currentUser, err := session.CurrentUser(r)
|
|
if err != nil {
|
|
session.FlashError(w, r, "Failed to get current user: %s", err)
|
|
templates.Redirect(w, "/")
|
|
return
|
|
}
|
|
|
|
if idInt, err := strconv.Atoi(r.FormValue("photo_id")); err == nil {
|
|
photoID = uint64(idInt)
|
|
} else {
|
|
session.FlashError(w, r, "Invalid or missing photo_id parameter: %s", err)
|
|
templates.Redirect(w, next)
|
|
return
|
|
}
|
|
|
|
// Get this photo.
|
|
photo, err := models.GetPhoto(photoID)
|
|
if err != nil {
|
|
session.FlashError(w, r, "Didn't find photo ID in database: %s", err)
|
|
templates.Redirect(w, next)
|
|
return
|
|
}
|
|
|
|
photo.Explicit = true
|
|
if err := photo.Save(); err != nil {
|
|
session.FlashError(w, r, "Couldn't save photo: %s", err)
|
|
} else {
|
|
session.Flash(w, r, "Marked photo as Explicit!")
|
|
}
|
|
|
|
// Log the change.
|
|
models.LogUpdated(&models.User{ID: photo.UserID}, currentUser, "photos", photo.ID, "Marked explicit by admin action.", []models.FieldDiff{
|
|
models.NewFieldDiff("Explicit", false, true),
|
|
})
|
|
|
|
templates.Redirect(w, next)
|
|
})
|
|
}
|