api: add option to delete own comments

This commit is contained in:
Adhityaa Chandrasekar 2019-05-15 09:13:39 -07:00
parent 5228ff671a
commit 5faa727ef8
3 changed files with 61 additions and 12 deletions

View File

@ -41,6 +41,12 @@ func commentDeleteHandler(w http.ResponseWriter, r *http.Request) {
return
}
cm, err := commentGetByCommentHex(*x.CommentHex)
if err != nil {
bodyMarshal(w, response{"success": false, "message": err.Error()})
return
}
domain, _, err := commentDomainPathGet(*x.CommentHex)
if err != nil {
bodyMarshal(w, response{"success": false, "message": err.Error()})
@ -53,7 +59,7 @@ func commentDeleteHandler(w http.ResponseWriter, r *http.Request) {
return
}
if !isModerator {
if !isModerator && cm.CommenterHex != c.CommenterHex {
bodyMarshal(w, response{"success": false, "message": errorNotModerator.Error()})
return
}

41
api/comment_get.go Normal file
View File

@ -0,0 +1,41 @@
package main
import (
)
func commentGetByCommentHex(commentHex string) (comment, error) {
if commentHex == "" {
return comment{}, errorMissingField
}
statement := `
SELECT
commentHex,
commenterHex,
markdown,
html,
parentHex,
score,
state,
creationDate
FROM comments
WHERE comments.commentHex = $1;
`
row := db.QueryRow(statement, commentHex)
c := comment{}
if err := row.Scan(
&c.CommentHex,
&c.CommenterHex,
&c.Markdown,
&c.Html,
&c.ParentHex,
&c.Score,
&c.State,
&c.CreationDate); err != nil {
// TODO: is this the only error?
return c, errorNoSuchComment
}
return c, nil
}

View File

@ -936,18 +936,20 @@
append(options, reply);
if (isModerator) {
if (parentHex === "root") {
append(options, sticky);
}
if (isModerator && parentHex === "root") {
append(options, sticky);
}
if (isModerator || comment.commenterHex === selfHex) {
append(options, remove);
if (comment.state !== "approved") {
append(options, approve);
}
} else {
if (stickyCommentHex === comment.commentHex) {
append(options, sticky);
}
}
if (isModerator && comment.state !== "approved") {
append(options, approve);
}
if (!isModerator && stickyCommentHex === comment.commentHex) {
append(options, sticky);
}
attrSet(options, "style", "width: " + ((options.childNodes.length+1)*32) + "px;");