diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/likes/likes.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/modules/likes/likes.go b/modules/likes/likes.go index 4d69d7b..02cf9d5 100644 --- a/modules/likes/likes.go +++ b/modules/likes/likes.go | |||
@@ -106,6 +106,13 @@ func (m *Module) isLikedBy(w http.ResponseWriter, r *http.Request, p httprouter. | |||
106 | w.Write([]byte(fmt.Sprintf("%t", res > 0))) | 106 | w.Write([]byte(fmt.Sprintf("%t", res > 0))) |
107 | } | 107 | } |
108 | func (m *Module) addLike(w http.ResponseWriter, r *http.Request, p httprouter.Params) { | 108 | func (m *Module) addLike(w http.ResponseWriter, r *http.Request, p httprouter.Params) { |
109 | user, _ := m.g.Charakterin.GetUserFromRequest(r) | ||
110 | |||
111 | if user == nil { | ||
112 | http.Error(w, "403", http.StatusForbidden) | ||
113 | return | ||
114 | } | ||
115 | |||
109 | params, err := readBody(r) | 116 | params, err := readBody(r) |
110 | if err != nil { | 117 | if err != nil { |
111 | log.Println(err) | 118 | log.Println(err) |
@@ -130,6 +137,10 @@ func (m *Module) addLike(w http.ResponseWriter, r *http.Request, p httprouter.Pa | |||
130 | http.Error(w, "invalid user id", http.StatusBadRequest) | 137 | http.Error(w, "invalid user id", http.StatusBadRequest) |
131 | return | 138 | return |
132 | } | 139 | } |
140 | if user.ID != userId { | ||
141 | http.Error(w, "403", http.StatusForbidden) | ||
142 | return | ||
143 | } | ||
133 | 144 | ||
134 | _, err = m.g.DB.Exec(`INSERT INTO grilist.likes(content, "user", type) SELECT $1, $2, $3 WHERE NOT EXISTS (SELECT * FROM grilist.likes WHERE content = $1 AND "user" = $2 AND type = $3)`, contentId, userId, contentType) | 145 | _, err = m.g.DB.Exec(`INSERT INTO grilist.likes(content, "user", type) SELECT $1, $2, $3 WHERE NOT EXISTS (SELECT * FROM grilist.likes WHERE content = $1 AND "user" = $2 AND type = $3)`, contentId, userId, contentType) |
135 | if err != nil { | 146 | if err != nil { |
@@ -142,19 +153,29 @@ func (m *Module) addLike(w http.ResponseWriter, r *http.Request, p httprouter.Pa | |||
142 | } | 153 | } |
143 | 154 | ||
144 | func (m *Module) removeLike(w http.ResponseWriter, r *http.Request, p httprouter.Params) { | 155 | func (m *Module) removeLike(w http.ResponseWriter, r *http.Request, p httprouter.Params) { |
156 | user, _ := m.g.Charakterin.GetUserFromRequest(r) | ||
157 | |||
158 | if user == nil { | ||
159 | http.Error(w, "403", http.StatusForbidden) | ||
160 | return | ||
161 | } | ||
162 | |||
145 | params, err := readBody(r) | 163 | params, err := readBody(r) |
146 | if err != nil { | 164 | if err != nil { |
165 | log.Println(err) | ||
147 | http.Error(w, "invalid body", http.StatusBadRequest) | 166 | http.Error(w, "invalid body", http.StatusBadRequest) |
148 | return | 167 | return |
149 | } | 168 | } |
150 | 169 | ||
151 | contentId, err := strconv.Atoi(params.Get("id")) | 170 | contentId, err := strconv.Atoi(params.Get("id")) |
152 | if err != nil { | 171 | if err != nil { |
172 | log.Println(err) | ||
153 | http.Error(w, "invalid content id", http.StatusBadRequest) | 173 | http.Error(w, "invalid content id", http.StatusBadRequest) |
154 | return | 174 | return |
155 | } | 175 | } |
156 | contentType, err := strconv.Atoi(params.Get("type")) | 176 | contentType, err := strconv.Atoi(params.Get("type")) |
157 | if err != nil { | 177 | if err != nil { |
178 | log.Println(err) | ||
158 | http.Error(w, "invalid content type", http.StatusBadRequest) | 179 | http.Error(w, "invalid content type", http.StatusBadRequest) |
159 | return | 180 | return |
160 | } | 181 | } |
@@ -163,6 +184,10 @@ func (m *Module) removeLike(w http.ResponseWriter, r *http.Request, p httprouter | |||
163 | http.Error(w, "invalid user id", http.StatusBadRequest) | 184 | http.Error(w, "invalid user id", http.StatusBadRequest) |
164 | return | 185 | return |
165 | } | 186 | } |
187 | if user.ID != userId { | ||
188 | http.Error(w, "403", http.StatusForbidden) | ||
189 | return | ||
190 | } | ||
166 | 191 | ||
167 | _, err = m.g.DB.Exec(`DELETE FROM grilist.likes WHERE content = $1 AND "user" = $2 AND type = $3`, contentId, userId, contentType) | 192 | _, err = m.g.DB.Exec(`DELETE FROM grilist.likes WHERE content = $1 AND "user" = $2 AND type = $3`, contentId, userId, contentType) |
168 | if err != nil { | 193 | if err != nil { |