api: add option to delete own comments
This commit is contained in:
parent
5228ff671a
commit
5faa727ef8
@ -41,6 +41,12 @@ func commentDeleteHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cm, err := commentGetByCommentHex(*x.CommentHex)
|
||||||
|
if err != nil {
|
||||||
|
bodyMarshal(w, response{"success": false, "message": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
domain, _, err := commentDomainPathGet(*x.CommentHex)
|
domain, _, err := commentDomainPathGet(*x.CommentHex)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
bodyMarshal(w, response{"success": false, "message": err.Error()})
|
bodyMarshal(w, response{"success": false, "message": err.Error()})
|
||||||
@ -53,7 +59,7 @@ func commentDeleteHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !isModerator {
|
if !isModerator && cm.CommenterHex != c.CommenterHex {
|
||||||
bodyMarshal(w, response{"success": false, "message": errorNotModerator.Error()})
|
bodyMarshal(w, response{"success": false, "message": errorNotModerator.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
41
api/comment_get.go
Normal file
41
api/comment_get.go
Normal 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
|
||||||
|
}
|
@ -936,18 +936,20 @@
|
|||||||
|
|
||||||
append(options, reply);
|
append(options, reply);
|
||||||
|
|
||||||
if (isModerator) {
|
if (isModerator && parentHex === "root") {
|
||||||
if (parentHex === "root") {
|
append(options, sticky);
|
||||||
append(options, sticky);
|
}
|
||||||
}
|
|
||||||
|
if (isModerator || comment.commenterHex === selfHex) {
|
||||||
append(options, remove);
|
append(options, remove);
|
||||||
if (comment.state !== "approved") {
|
}
|
||||||
append(options, approve);
|
|
||||||
}
|
if (isModerator && comment.state !== "approved") {
|
||||||
} else {
|
append(options, approve);
|
||||||
if (stickyCommentHex === comment.commentHex) {
|
}
|
||||||
append(options, sticky);
|
|
||||||
}
|
if (!isModerator && stickyCommentHex === comment.commentHex) {
|
||||||
|
append(options, sticky);
|
||||||
}
|
}
|
||||||
|
|
||||||
attrSet(options, "style", "width: " + ((options.childNodes.length+1)*32) + "px;");
|
attrSet(options, "style", "width: " + ((options.childNodes.length+1)*32) + "px;");
|
||||||
|
Loading…
Reference in New Issue
Block a user