3535use OCP \DirectEditing \IEditor ;
3636use \OCP \DirectEditing \IManager ;
3737use OCP \DirectEditing \IToken ;
38+ use OCP \Encryption \IManager as EncryptionManager ;
3839use OCP \Files \File ;
3940use OCP \Files \IRootFolder ;
4041use OCP \Files \Node ;
4546use OCP \L10N \IFactory ;
4647use OCP \Security \ISecureRandom ;
4748use OCP \Share \IShare ;
49+ use Throwable ;
4850use function array_key_exists ;
4951use function in_array ;
5052
@@ -55,30 +57,33 @@ class Manager implements IManager {
5557
5658 /** @var IEditor[] */
5759 private $ editors = [];
58-
5960 /** @var IDBConnection */
6061 private $ connection ;
61- /**
62- * @var ISecureRandom
63- */
62+ /** @var ISecureRandom */
6463 private $ random ;
64+ /** @var string|null */
6565 private $ userId ;
66+ /** @var IRootFolder */
6667 private $ rootFolder ;
6768 /** @var IL10N */
6869 private $ l10n ;
70+ /** @var EncryptionManager */
71+ private $ encryptionManager ;
6972
7073 public function __construct (
7174 ISecureRandom $ random ,
7275 IDBConnection $ connection ,
7376 IUserSession $ userSession ,
7477 IRootFolder $ rootFolder ,
75- IFactory $ l10nFactory
78+ IFactory $ l10nFactory ,
79+ EncryptionManager $ encryptionManager
7680 ) {
7781 $ this ->random = $ random ;
7882 $ this ->connection = $ connection ;
7983 $ this ->userId = $ userSession ->getUser () ? $ userSession ->getUser ()->getUID () : null ;
8084 $ this ->rootFolder = $ rootFolder ;
8185 $ this ->l10n = $ l10nFactory ->get ('core ' );
86+ $ this ->encryptionManager = $ encryptionManager ;
8287 }
8388
8489 public function registerDirectEditor (IEditor $ directEditor ): void {
@@ -171,7 +176,7 @@ public function edit(string $token): Response {
171176 }
172177 $ editor = $ this ->getEditor ($ tokenObject ->getEditor ());
173178 $ this ->accessToken ($ token );
174- } catch (\ Throwable $ throwable ) {
179+ } catch (Throwable $ throwable ) {
175180 $ this ->invalidateToken ($ token );
176181 return new NotFoundResponse ();
177182 }
@@ -275,4 +280,22 @@ public function getFileForToken($userId, $fileId, $filePath = null): Node {
275280 }
276281 return $ files [0 ];
277282 }
283+
284+ public function isEnabled (): bool {
285+ if (!$ this ->encryptionManager ->isEnabled ()) {
286+ return true ;
287+ }
288+
289+ try {
290+ $ moduleId = $ this ->encryptionManager ->getDefaultEncryptionModuleId ();
291+ $ module = $ this ->encryptionManager ->getEncryptionModule ($ moduleId );
292+ /** @var \OCA\Encryption\Util $util */
293+ $ util = \OC ::$ server ->get (\OCA \Encryption \Util::class);
294+ if ($ module ->isReadyForUser ($ this ->userId ) && $ util ->isMasterKeyEnabled ()) {
295+ return true ;
296+ }
297+ } catch (Throwable $ e ) {
298+ }
299+ return false ;
300+ }
278301}
0 commit comments