2020use OCA \Richdocuments \Listener \FileCreatedFromTemplateListener ;
2121use OCA \Richdocuments \Listener \LoadAdditionalListener ;
2222use OCA \Richdocuments \Listener \LoadViewerListener ;
23+ use OCA \Richdocuments \Listener \OverwritePublicSharePropertiesListener ;
2324use OCA \Richdocuments \Listener \ReferenceListener ;
2425use OCA \Richdocuments \Listener \RegisterTemplateFileCreatorListener ;
2526use OCA \Richdocuments \Listener \ShareLinkListener ;
3233use OCA \Richdocuments \Preview \OpenDocument ;
3334use OCA \Richdocuments \Preview \Pdf ;
3435use OCA \Richdocuments \Reference \OfficeTargetReferenceProvider ;
36+ use OCA \Richdocuments \Storage \SecureViewWrapper ;
3537use OCA \Richdocuments \TaskProcessing \SlideDeckGenerationProvider ;
3638use OCA \Richdocuments \TaskProcessing \SlideDeckGenerationTaskType ;
3739use OCA \Richdocuments \TaskProcessing \TextToDocumentProvider ;
3840use OCA \Richdocuments \TaskProcessing \TextToDocumentTaskType ;
3941use OCA \Richdocuments \TaskProcessing \TextToSpreadsheetProvider ;
4042use OCA \Richdocuments \TaskProcessing \TextToSpreadsheetTaskType ;
4143use OCA \Richdocuments \Template \CollaboraTemplateProvider ;
44+ use OCA \Talk \Events \OverwritePublicSharePropertiesEvent ;
4245use OCA \Viewer \Event \LoadViewer ;
4346use OCP \AppFramework \App ;
4447use OCP \AppFramework \Bootstrap \IBootContext ;
4750use OCP \AppFramework \Http \Events \BeforeTemplateRenderedEvent ;
4851use OCP \Collaboration \Reference \RenderReferenceEvent ;
4952use OCP \Collaboration \Resources \LoadAdditionalScriptsEvent ;
53+ use OCP \Files \Storage \IStorage ;
5054use OCP \Files \Template \BeforeGetTemplatesEvent ;
5155use OCP \Files \Template \FileCreatedFromTemplateEvent ;
5256use OCP \Files \Template \RegisterTemplateCreatorEvent ;
@@ -62,6 +66,8 @@ public function __construct(array $urlParams = []) {
6266 }
6367
6468 public function register (IRegistrationContext $ context ): void {
69+ \OCP \Util::connectHook ('OC_Filesystem ' , 'preSetup ' , $ this , 'addStorageWrapper ' );
70+
6571 $ context ->registerTemplateProvider (CollaboraTemplateProvider::class);
6672 $ context ->registerCapability (Capabilities::class);
6773 $ context ->registerMiddleWare (WOPIMiddleware::class);
@@ -76,6 +82,7 @@ public function register(IRegistrationContext $context): void {
7682 $ context ->registerEventListener (RenderReferenceEvent::class, ReferenceListener::class);
7783 $ context ->registerEventListener (BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class);
7884 $ context ->registerEventListener (BeforeGetTemplatesEvent::class, BeforeGetTemplatesListener::class);
85+ $ context ->registerEventListener (OverwritePublicSharePropertiesEvent::class, OverwritePublicSharePropertiesListener::class);
7986 $ context ->registerReferenceProvider (OfficeTargetReferenceProvider::class);
8087 $ context ->registerSensitiveMethods (WopiMapper::class, [
8188 'getPathForToken ' ,
@@ -101,4 +108,30 @@ public function register(IRegistrationContext $context): void {
101108
102109 public function boot (IBootContext $ context ): void {
103110 }
111+
112+ /**
113+ * @internal
114+ */
115+ public function addStorageWrapper (): void {
116+ // FIXME: We can skip this if secure view is not enabled at all
117+ // Needs to be added as the first layer
118+ \OC \Files \Filesystem::addStorageWrapper ('richdocuments ' , [$ this , 'addStorageWrapperCallback ' ], -10 );
119+ }
120+
121+ /**
122+ * @param $mountPoint
123+ * @param IStorage $storage
124+ * @return SecureViewWrapper|IStorage
125+ *@internal
126+ */
127+ public function addStorageWrapperCallback ($ mountPoint , IStorage $ storage ) {
128+ if (!\OC ::$ CLI && $ mountPoint !== '/ ' ) {
129+ return new SecureViewWrapper ([
130+ 'storage ' => $ storage ,
131+ 'mountPoint ' => $ mountPoint ,
132+ ]);
133+ }
134+
135+ return $ storage ;
136+ }
104137}
0 commit comments