fix: journal privacy

This commit is contained in:
trisua 2025-06-19 16:19:57 -04:00
parent 57a69eea50
commit 97b7e873ed
6 changed files with 95 additions and 15 deletions

View file

@ -1,9 +1,10 @@
use oiseau::{cache::Cache, query_row};
use crate::{
database::common::NAME_REGEX,
model::{
auth::User,
permissions::FinePermission,
journals::{Journal, JournalPrivacyPermission},
permissions::FinePermission,
Error, Result,
},
};
@ -85,6 +86,18 @@ impl DataManager {
data.title = data.title.replace(" ", "_");
// check name
let regex = regex::RegexBuilder::new(NAME_REGEX)
.multi_line(true)
.build()
.unwrap();
if regex.captures(&data.title).is_some() {
return Err(Error::MiscError(
"This title contains invalid characters".to_string(),
));
}
// make sure this title isn't already in use
if self
.get_journal_by_owner_title(data.owner, &data.title)

View file

@ -30,3 +30,4 @@ mod userblocks;
mod userfollows;
pub use drivers::DataManager;
pub use common::NAME_REGEX;

View file

@ -1,4 +1,5 @@
use oiseau::cache::Cache;
use crate::database::common::NAME_REGEX;
use crate::model::{auth::User, journals::Note, permissions::FinePermission, Error, Result};
use crate::{auto_method, DataManager};
use oiseau::{execute, get, params, query_row, query_rows, PostgresRow};
@ -84,6 +85,18 @@ impl DataManager {
data.title = data.title.replace(" ", "_");
// check name
let regex = regex::RegexBuilder::new(NAME_REGEX)
.multi_line(true)
.build()
.unwrap();
if regex.captures(&data.title).is_some() {
return Err(Error::MiscError(
"This title contains invalid characters".to_string(),
));
}
// make sure this title isn't already in use
if self
.get_note_by_journal_title(data.journal, &data.title)