The server for Open Course World
at main 64 lines 1.4 kB view raw
1package api 2 3import ( 4 "encoding/json" 5 "errors" 6 "net/http" 7 "smm2_gameserver/orm" 8 9 "github.com/gorilla/mux" 10) 11 12func initComment() { 13 Secure("/api/admin/comment/{id}", func(w http.ResponseWriter, r *http.Request, user orm.User) { 14 commentId := mux.Vars(r)["id"] 15 16 if !user.Role.Admin { 17 reportError(w, r, errors.New("you do not have admin permissions")) 18 return 19 } 20 21 err := dataView.AdminDeleteComment(commentId) 22 23 w.Header().Set("Content-Type", "application/json") 24 json.NewEncoder(w).Encode(map[string]any{"id": commentId, "error": err}) 25 }).Methods("DELETE") 26 27 // list all comments for admin purposes 28 Secure("/api/admin/comments", func(w http.ResponseWriter, r *http.Request, user orm.User) { 29 if !user.Role.Admin { 30 reportError(w, r, errors.New("you do not have admin permissions")) 31 return 32 } 33 34 size, offset, err := parseRange(r.URL.Query()) 35 if err != nil { 36 reportError(w, r, err) 37 return 38 } 39 40 var comments []orm.Comment 41 42 err = db. 43 Preload("Image"). 44 Preload("Commenter"). 45 Preload("Course.Owner"). 46 Order("time_posted DESC"). 47 Offset(offset). 48 Limit(size). 49 Find(&comments). 50 Error 51 52 if err != nil { 53 reportError(w, r, err) 54 return 55 } 56 57 w.Header().Set("Content-Type", "application/json") 58 err = json.NewEncoder(w).Encode(comments) 59 if err != nil { 60 reportError(w, r, err) 61 return 62 } 63 }) 64}