summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2024-03-07 15:45:28 +0000
committerdakkar <dakkar@thenautilus.net>2024-03-07 15:45:28 +0000
commit5ba9a3f2005e6ffcb78eecfc257057ef82a2e874 (patch)
tree75529101477b7daecda002e807242964f445a980
parentmerge: update list of project members (!452) (diff)
parentupdate notes to make sure we remember to check import/create problems (diff)
downloadsharkey-5ba9a3f2005e6ffcb78eecfc257057ef82a2e874.tar.gz
sharkey-5ba9a3f2005e6ffcb78eecfc257057ef82a2e874.tar.bz2
sharkey-5ba9a3f2005e6ffcb78eecfc257057ef82a2e874.zip
merge: check prohibited words when creating notes (!461)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/461 Approved-by: Amelia Yukii <amelia.yukii@shourai.de> Approved-by: Luna <her@mint.lgbt>
-rw-r--r--CONTRIBUTING.md2
-rw-r--r--packages/backend/src/core/NoteCreateService.ts14
2 files changed, 14 insertions, 2 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index fefabc513d..50f323fab0 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -462,6 +462,8 @@ fix conflicts and *commit*!
*after that commit*, do all the extra work, on the same branch:
* copy all changes:
+ * from `NoteCreateService.create` to `NoteCreateService.import` (and
+ vice versa if `git` got confused!)
* from `NoteCreateService` to `NoteEditService`
* from `ApNoteService.createNote` to `ApNoteService.updateNote`
* from `endoints/notes/create.ts` to `endoints/notes/edit.ts`
diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts
index b985846f1c..631d7074bd 100644
--- a/packages/backend/src/core/NoteCreateService.ts
+++ b/packages/backend/src/core/NoteCreateService.ts
@@ -266,6 +266,16 @@ export class NoteCreateService implements OnApplicationShutdown {
}
}
+ const hasProhibitedWords = await this.checkProhibitedWordsContain({
+ cw: data.cw,
+ text: data.text,
+ pollChoices: data.poll?.choices,
+ }, meta.prohibitedWords);
+
+ if (hasProhibitedWords) {
+ throw new IdentifiableError('689ee33f-f97c-479a-ac49-1b9f8140af99', 'Note contains prohibited words');
+ }
+
const inSilencedInstance = this.utilityService.isSilencedHost(meta.silencedHosts, user.host);
if (data.visibility === 'public' && inSilencedInstance && user.host !== null) {
@@ -299,7 +309,7 @@ export class NoteCreateService implements OnApplicationShutdown {
}
// Check blocking
- if (data.renote && data.text == null && data.poll == null && (data.files == null || data.files.length === 0)) {
+ if (data.renote && !this.isQuote(data)) {
if (data.renote.userHost === null) {
if (data.renote.userId !== user.id) {
const blocked = await this.userBlockingService.checkBlocked(data.renote.userId, user.id);
@@ -1018,7 +1028,7 @@ export class NoteCreateService implements OnApplicationShutdown {
removeOnComplete: true,
});
}
-
+
// Pack the note
const noteObj = await this.noteEntityService.pack(note, null, { skipHide: true, withReactionAndUserPairCache: true });