The server for Open Course World
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}