diff options
| author | dakkar <dakkar@thenautilus.net> | 2024-11-23 12:37:15 +0000 |
|---|---|---|
| committer | dakkar <dakkar@thenautilus.net> | 2024-11-23 12:37:15 +0000 |
| commit | c4334bff81de41564442ccd6c833a557e3d1cb57 (patch) | |
| tree | 92cac9bdc77fa5f040a14186b70926bb3da1d0e0 /packages/backend/src/server/api/endpoints/notes | |
| parent | fix typo (diff) | |
| download | sharkey-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.ts | 21 |
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; |