Albirew/nyaa-pantsu
Archivé
1
0
Bifurcation 0
Ce dépôt a été archivé le 2022-05-07. Vous pouvez voir ses fichiers ou le cloner, mais pas ouvrir de ticket ou de demandes d'ajout, ni soumettre de changements.
nyaa-pantsu/router/torrentReportHandler.go

93 lignes
2,5 Kio
Go
Brut Vue normale Historique

2017-05-10 06:20:45 +02:00
package router
import (
"net/http"
"strconv"
2017-05-10 06:20:45 +02:00
"github.com/ewhal/nyaa/model"
"github.com/ewhal/nyaa/service/moderation"
2017-05-10 10:42:25 +02:00
"github.com/ewhal/nyaa/service/user/permission"
"github.com/gorilla/mux"
2017-05-10 06:20:45 +02:00
)
2017-05-10 09:57:55 +02:00
/*
2017-05-10 06:20:45 +02:00
func SanitizeTorrentReport(torrentReport *model.TorrentReport) {
// TODO unescape html ?
return
}
func IsValidTorrentReport() bool {
// TODO Validate, see if user_id already reported, see if torrent exists
return true
}
// TODO Only allow moderators for each action in this file
func CreateTorrentReportHandler(w http.ResponseWriter, r *http.Request) {
var torrentReport model.TorrentReport
var err error
modelHelper.BindValueForm(&torrentReport, r)
if IsValidTorrentReport() {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
SanitizeTorrentReport(&torrentReport)
_, err = moderationService.CreateTorrentReport(torrentReport)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
func DeleteTorrentReportHandler(w http.ResponseWriter, r *http.Request) {
// TODO Figure out how to get torrent report id from form
var id int
var err error
_, err = moderationService.DeleteTorrentReport(id)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
2017-05-10 09:57:55 +02:00
*/
2017-05-10 10:42:25 +02:00
2017-05-10 09:57:55 +02:00
/*
2017-05-10 06:20:45 +02:00
func DeleteTorrentHandler(w http.ResponseWriter, r *http.Request) {
// TODO Figure out how to get torrent report id from form
var err error
var id string
_, err = torrentService.DeleteTorrent(id)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
2017-05-10 09:57:55 +02:00
}*/
func GetTorrentReportHandler(w http.ResponseWriter, r *http.Request) {
currentUser := GetUser(r)
if userPermission.HasAdmin(currentUser) {
vars := mux.Vars(r)
page, _ := strconv.Atoi(vars["page"])
offset := 100
userid := r.URL.Query().Get("userid")
var conditions string
var values []interface{}
if (userid != "") {
conditions = "user_id = ?"
values = append(values, userid)
}
torrentReports, nbReports, err := moderationService.GetTorrentReports(offset, page * offset, conditions, values...)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
err = torrentReportTemplate.ExecuteTemplate(w, "admin_index.html", ViewTorrentReportsVariables{model.TorrentReportsToJSON(torrentReports), NewSearchForm(), Navigation{nbReports, offset, page, "mod_trlist_page"}, currentUser, r.URL})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
} else {
http.Error(w, "admins only", http.StatusForbidden)
}
}