Fix for marking a comment as read.

This commit is contained in:
Dessalines 2019-04-25 08:33:25 -07:00
parent cce74d7cdc
commit 5683cd3987

View file

@ -1311,30 +1311,32 @@ impl Perform for EditComment {
let user_id = claims.id; let user_id = claims.id;
// Verify its the creator or a mod, or an admin
let orig_comment = CommentView::read(&conn, self.edit_id, None)?;
let mut editors: Vec<i32> = vec![self.creator_id];
editors.append(
&mut CommunityModeratorView::for_community(&conn, orig_comment.community_id)
?
.into_iter()
.map(|m| m.user_id)
.collect()
);
editors.append(
&mut UserView::admins(&conn)
?
.into_iter()
.map(|a| a.id)
.collect()
);
if !editors.contains(&user_id) {
return Err(self.error("Not allowed to edit comment."))?
}
// You are allowed to mark the comment as read even if you're banned. // You are allowed to mark the comment as read even if you're banned.
if self.read.is_none() { if self.read.is_none() {
// Verify its the creator or a mod, or an admin
let orig_comment = CommentView::read(&conn, self.edit_id, None)?;
let mut editors: Vec<i32> = vec![self.creator_id];
editors.append(
&mut CommunityModeratorView::for_community(&conn, orig_comment.community_id)
?
.into_iter()
.map(|m| m.user_id)
.collect()
);
editors.append(
&mut UserView::admins(&conn)
?
.into_iter()
.map(|a| a.id)
.collect()
);
if !editors.contains(&user_id) {
return Err(self.error("Not allowed to edit comment."))?
}
// Check for a community ban // Check for a community ban
if CommunityUserBanView::get(&conn, user_id, orig_comment.community_id).is_ok() { if CommunityUserBanView::get(&conn, user_id, orig_comment.community_id).is_ok() {
return Err(self.error("You have been banned from this community"))? return Err(self.error("You have been banned from this community"))?
@ -1344,6 +1346,7 @@ impl Perform for EditComment {
if UserView::read(&conn, user_id)?.banned { if UserView::read(&conn, user_id)?.banned {
return Err(self.error("You have been banned from the site"))? return Err(self.error("You have been banned from the site"))?
} }
} }
let content_slurs_removed = remove_slurs(&self.content.to_owned()); let content_slurs_removed = remove_slurs(&self.content.to_owned());