Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 281e3fba authored by Fahim Salam Chowdhury's avatar Fahim Salam Chowdhury 👽
Browse files

rnd: enable storageWrapper & don't block for specific request

parent f4540414
Loading
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -42,7 +42,9 @@ use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent;
use OCP\Files\Storage\IStorage;
use OCP\IGroupManager;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\User\Events\BeforeUserDeletedEvent;
use OCP\User\Events\PasswordUpdatedEvent;
use OCP\User\Events\UserChangedEvent;
@@ -56,7 +58,7 @@ class Application extends App implements IBootstrap {
	}

	public function register(IRegistrationContext $context): void {
		//	Util::connectHook('OC_Filesystem', 'preSetup', $this, 'addStorageWrapper');
		Util::connectHook('OC_Filesystem', 'preSetup', $this, 'addStorageWrapper');
		$context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class);
		$context->registerEventListener(BeforeUserDeletedEvent::class, BeforeUserDeletedListener::class);
		$context->registerEventListener(UserChangedEvent::class, UserChangedListener::class);
@@ -89,6 +91,25 @@ class Application extends App implements IBootstrap {
	 * @return StorageWrapper|IStorage
	 */
	public function addStorageWrapperCallback($mountPoint, IStorage $storage) {
		if (\OC::$CLI && (\OC::$REQUESTEDAPP === "ecloud-accounts" || \OC::$REQUESTEDAPP === "encryption")) {
			return $storage;
		}

		$userSession = \OC::$server->get(IUserSession::class);
		$currentUser = $userSession->getUser();
		if ($currentUser !== null) {
			$groupManager = \OC::$server->get(IGroupManager::class);
			$groups = $groupManager->getUserGroups($currentUser);

			if (!empty($groups)) {
				foreach ($groups as $group) {
					if ($group->getGID() === "recovery_done") {
						return $storage;
					}
				}
			}
		}

		$instanceId = \OC::$server->getConfig()->getSystemValue('instanceid', '');
		$appdataFolder = 'appdata_' . $instanceId;
		if ($mountPoint !== '/' && strpos($mountPoint, '/' . $appdataFolder) !== 0) {