mirror of https://github.com/LemmyNet/lemmy.git
Add comment depth check (#2940)
* Add comment depth check * Move comment depth code * linter fixpull/2963/head
parent
491e197529
commit
15c84e2f7b
|
@ -33,6 +33,7 @@ use lemmy_utils::{
|
|||
validation::is_valid_body_field,
|
||||
},
|
||||
};
|
||||
const MAX_COMMENT_DEPTH_LIMIT: usize = 100;
|
||||
|
||||
#[async_trait::async_trait(?Send)]
|
||||
impl PerformCrud for CreateComment {
|
||||
|
@ -77,6 +78,7 @@ impl PerformCrud for CreateComment {
|
|||
if parent.post_id != post_id {
|
||||
return Err(LemmyError::from_message("couldnt_create_comment"));
|
||||
}
|
||||
check_comment_depth(parent)?;
|
||||
}
|
||||
|
||||
// if no language is set, copy language from parent post/comment
|
||||
|
@ -186,3 +188,13 @@ impl PerformCrud for CreateComment {
|
|||
.await
|
||||
}
|
||||
}
|
||||
|
||||
pub fn check_comment_depth(comment: &Comment) -> Result<(), LemmyError> {
|
||||
let path = &comment.path.0;
|
||||
let length = path.split('.').collect::<Vec<&str>>().len();
|
||||
if length > MAX_COMMENT_DEPTH_LIMIT {
|
||||
Err(LemmyError::from_message("max_comment_depth_reached"))
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue