@@ -5,6 +5,9 @@ import type NoteService from '@domain/service/note.js';
55import useNoteResolver from '../middlewares/note/useNoteResolver.js' ;
66import type { NoteAttachmentFileLocation } from '@domain/entities/file.js' ;
77import { StatusCodes } from 'http-status-codes' ;
8+ import useNoteSettingsResolver from '../middlewares/noteSettings/useNoteSettingsResolver.js' ;
9+ import type NoteSettingsService from '@domain/service/noteSettings.js' ;
10+ import useMemberRoleResolver from '../middlewares/noteSettings/useMemberRoleResolver.js' ;
811
912/**
1013 * Interface for upload router options
@@ -20,6 +23,11 @@ interface UploadRouterOptions {
2023 */
2124 noteService : NoteService ;
2225
26+ /**
27+ * Note settings service instance
28+ */
29+ noteSettingsService : NoteSettingsService ;
30+
2331 /**
2432 * Limit for uploaded files size
2533 */
@@ -35,6 +43,18 @@ const UploadRouter: FastifyPluginCallback<UploadRouterOptions> = async (fastify,
3543 */
3644 const { noteResolver } = useNoteResolver ( opts . noteService ) ;
3745
46+ /**
47+ * Prepare note settings resolver middleware
48+ * It should be used to use note settings in middlewares
49+ */
50+ const { noteSettingsResolver } = useNoteSettingsResolver ( opts . noteSettingsService ) ;
51+
52+ /**
53+ * Prepare user role resolver middleware
54+ * It should be used to use user role in middlewares
55+ */
56+ const { memberRoleResolver } = useMemberRoleResolver ( opts . noteSettingsService ) ;
57+
3858 await fastify . register ( fastifyMultipart , {
3959 limits : {
4060 fieldSize : opts . fileSizeLimit ,
@@ -74,14 +94,20 @@ const UploadRouter: FastifyPluginCallback<UploadRouterOptions> = async (fastify,
7494 '2xx' : {
7595 type : 'object' ,
7696 description : 'File key to get it from the API' ,
77- key : {
78- $ref : 'UploadSchema#/properties/key' ,
97+ properties : {
98+ key : {
99+ $ref : 'UploadSchema#/properties/key' ,
100+ } ,
79101 } ,
80102 } ,
81103 } ,
82104 } ,
83105 attachValidation : true ,
84- preHandler : [ noteResolver ] ,
106+ preHandler : [
107+ noteResolver ,
108+ noteSettingsResolver ,
109+ memberRoleResolver ,
110+ ] ,
85111 } , async ( request , reply ) => {
86112 /**
87113 * @todo solve trouble with crashing app, when validations is not passed
@@ -128,7 +154,6 @@ const UploadRouter: FastifyPluginCallback<UploadRouterOptions> = async (fastify,
128154 $ref : 'UploadSchema#/properties/key' ,
129155 } ,
130156 } ,
131-
132157 response : {
133158 '2xx' : {
134159 description : 'Generated buffer' ,
@@ -138,7 +163,11 @@ const UploadRouter: FastifyPluginCallback<UploadRouterOptions> = async (fastify,
138163 } ,
139164 } ,
140165 } ,
141- preHandler : [ noteResolver ] ,
166+ preHandler : [
167+ noteResolver ,
168+ noteSettingsResolver ,
169+ memberRoleResolver ,
170+ ] ,
142171 } , async ( request , reply ) => {
143172 const fileLocation : NoteAttachmentFileLocation = {
144173 noteId : request . note ! . id ,
0 commit comments