summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/notes
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2024-11-23 12:37:15 +0000
committerdakkar <dakkar@thenautilus.net>2024-11-23 12:37:15 +0000
commitc4334bff81de41564442ccd6c833a557e3d1cb57 (patch)
tree92cac9bdc77fa5f040a14186b70926bb3da1d0e0 /packages/backend/src/server/api/endpoints/notes
parentfix typo (diff)
downloadsharkey-c4334bff81de41564442ccd6c833a557e3d1cb57.tar.gz
sharkey-c4334bff81de41564442ccd6c833a557e3d1cb57.tar.bz2
sharkey-c4334bff81de41564442ccd6c833a557e3d1cb57.zip
honour blocks and "signing required" for note versions
Diffstat (limited to 'packages/backend/src/server/api/endpoints/notes')
-rw-r--r--packages/backend/src/server/api/endpoints/notes/versions.ts21
1 files changed, 17 insertions, 4 deletions
diff --git a/packages/backend/src/server/api/endpoints/notes/versions.ts b/packages/backend/src/server/api/endpoints/notes/versions.ts
index 2b774ae2b0..96715ce6b2 100644
--- a/packages/backend/src/server/api/endpoints/notes/versions.ts
+++ b/packages/backend/src/server/api/endpoints/notes/versions.ts
@@ -27,6 +27,12 @@ export const meta = {
code: 'NO_SUCH_NOTE',
id: '24fcbfc6-2e37-42b6-8388-c29b3861a08d',
},
+
+ signinRequired: {
+ message: 'Signin required.',
+ code: 'SIGNIN_REQUIRED',
+ id: '8e75455b-738c-471d-9f80-62693f33372e',
+ },
},
} as const;
@@ -43,23 +49,30 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
constructor(
@Inject(DI.notesRepository)
private notesRepository: NotesRepository,
-
+
private getterService: GetterService,
private queryService: QueryService,
) {
super(meta, paramDef, async (ps, me) => {
const query = await this.notesRepository.createQueryBuilder('note')
- .select('note.id')
- .where('note.id = :noteId', { noteId: ps.noteId });
+ .where('note.id = :noteId', { noteId: ps.noteId })
+ .innerJoinAndSelect('note.user', 'user');
this.queryService.generateVisibilityQuery(query, me);
-
+ if (me) {
+ this.queryService.generateBlockedUserQuery(query, me);
+ }
+
const note = await query.getOne();
if (note === null) {
throw new ApiError(meta.errors.noSuchNote);
}
+ if (note.user!.requireSigninToViewContents && me == null) {
+ throw new ApiError(meta.errors.signinRequired);
+ }
+
const edits = await this.getterService.getEdits(ps.noteId).catch(err => {
if (err.id === '9725d0ce-ba28-4dde-95a7-2cbb2c15de24') throw new ApiError(meta.errors.noSuchNote);
throw err;