diff --git a/apps/files_sharing/lib/AppInfo/Application.php b/apps/files_sharing/lib/AppInfo/Application.php index a7d4755fbf..195d56f353 100644 --- a/apps/files_sharing/lib/AppInfo/Application.php +++ b/apps/files_sharing/lib/AppInfo/Application.php @@ -37,6 +37,7 @@ use OC\AppFramework\Utility\SimpleContainer; use OCA\Files_Sharing\Controller\ExternalSharesController; use OCA\Files_Sharing\Controller\ShareController; use OCA\Files_Sharing\Middleware\SharingCheckMiddleware; +use OCP\AppFramework\Utility\IControllerMethodReflector; use OCP\Defaults; use OCP\Federation\ICloudIdManager; use \OCP\IContainer; @@ -120,7 +121,7 @@ class Application extends App { $c->query('AppName'), $server->getConfig(), $server->getAppManager(), - $c['ControllerMethodReflector'], + $server->query(IControllerMethodReflector::class), $server->getShareManager(), $server->getRequest() ); diff --git a/apps/provisioning_api/lib/AppInfo/Application.php b/apps/provisioning_api/lib/AppInfo/Application.php index 7e9e04978f..4bf7eb7445 100644 --- a/apps/provisioning_api/lib/AppInfo/Application.php +++ b/apps/provisioning_api/lib/AppInfo/Application.php @@ -29,6 +29,7 @@ use OC\AppFramework\Utility\TimeFactory; use OC\Settings\Mailer\NewUserMailHelper; use OCA\Provisioning_API\Middleware\ProvisioningApiMiddleware; use OCP\AppFramework\App; +use OCP\AppFramework\Utility\IControllerMethodReflector; use OCP\Defaults; use OCP\Util; @@ -57,7 +58,7 @@ class Application extends App { $isAdmin = $user !== null ? $server->getGroupManager()->isAdmin($user->getUID()) : false; $isSubAdmin = $user !== null ? $server->getGroupManager()->getSubAdmin()->isSubAdmin($user) : false; return new ProvisioningApiMiddleware( - $c['ControllerMethodReflector'], + $c->query(IControllerMethodReflector::class), $isAdmin, $isSubAdmin ); diff --git a/lib/private/AppFramework/App.php b/lib/private/AppFramework/App.php index 25708245e2..abb779ca97 100644 --- a/lib/private/AppFramework/App.php +++ b/lib/private/AppFramework/App.php @@ -84,9 +84,9 @@ class App { */ public static function main(string $controllerName, string $methodName, DIContainer $container, array $urlParams = null) { if (!is_null($urlParams)) { - $container[IRequest::class]->setUrlParameters($urlParams); + $container->query(IRequest::class)->setUrlParameters($urlParams); } else if (isset($container['urlParams']) && !is_null($container['urlParams'])) { - $container[IRequest::class]->setUrlParameters($container['urlParams']); + $container->query(IRequest::class)->setUrlParameters($container['urlParams']); } $appName = $container['AppName']; diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php index 439404f26c..3708d967c9 100644 --- a/lib/private/AppFramework/DependencyInjection/DIContainer.php +++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php @@ -46,15 +46,13 @@ use OC\AppFramework\Middleware\Security\RateLimitingMiddleware; use OC\AppFramework\Middleware\Security\SecurityMiddleware; use OC\AppFramework\Middleware\SessionMiddleware; use OC\AppFramework\Utility\SimpleContainer; -use OC\Collaboration\Collaborators\SearchResult; use OC\Core\Middleware\TwoFactorMiddleware; -use OC\RichObjectStrings\Validator; use OC\ServerContainer; use OCP\AppFramework\Http\IOutput; use OCP\AppFramework\IAppContainer; use OCP\AppFramework\QueryException; +use OCP\AppFramework\Utility\IControllerMethodReflector; use OCP\AppFramework\Utility\ITimeFactory; -use OCP\Collaboration\Collaborators\ISearchResult; use OCP\Files\Folder; use OCP\Files\IAppData; use OCP\GlobalScale\IConfig; @@ -64,8 +62,6 @@ use OCP\IRequest; use OCP\IServerContainer; use OCP\ISession; use OCP\IUserSession; -use OCP\RichObjectStrings\IValidator; -use OCP\Encryption\IManager; use OCA\WorkflowEngine\Manager; class DIContainer extends SimpleContainer implements IAppContainer { @@ -89,6 +85,8 @@ class DIContainer extends SimpleContainer implements IAppContainer { $this['AppName'] = $appName; $this['urlParams'] = $urlParams; + $this->registerAlias('Request', IRequest::class); + /** @var \OC\ServerContainer $server */ if ($server === null) { $server = \OC::$server; @@ -125,19 +123,6 @@ class DIContainer extends SimpleContainer implements IAppContainer { return new OC\AppFramework\Logger($this->server->query(ILogger::class), $c->query('AppName')); }); - $this->registerAlias(\OCP\AppFramework\Utility\IControllerMethodReflector::class, \OC\AppFramework\Utility\ControllerMethodReflector::class); - $this->registerAlias('ControllerMethodReflector', \OCP\AppFramework\Utility\IControllerMethodReflector::class); - - $this->registerService(IRequest::class, function() { - return $this->getServer()->query(IRequest::class); - }); - $this->registerAlias('Request', IRequest::class); - - $this->registerAlias(\OCP\AppFramework\Utility\ITimeFactory::class, \OC\AppFramework\Utility\TimeFactory::class); - $this->registerAlias('TimeFactory', \OCP\AppFramework\Utility\ITimeFactory::class); - - $this->registerAlias(\OC\User\Session::class, \OCP\IUserSession::class); - $this->registerService(IServerContainer::class, function ($c) { return $this->getServer(); }); @@ -151,8 +136,6 @@ class DIContainer extends SimpleContainer implements IAppContainer { return $c; }); - $this->registerAlias(ISearchResult::class, SearchResult::class); - // commonly used attributes $this->registerService('UserId', function ($c) { return $c->query(IUserSession::class)->getSession()->get('user_id'); @@ -166,26 +149,10 @@ class DIContainer extends SimpleContainer implements IAppContainer { return $c->getServer()->getThemingDefaults(); }); - $this->registerService(IManager::class, function ($c) { - return $this->getServer()->getEncryptionManager(); - }); - $this->registerService(IConfig::class, function ($c) { return $c->query(OC\GlobalScale\Config::class); }); - $this->registerService(IValidator::class, function($c) { - return $c->query(Validator::class); - }); - - $this->registerService(\OC\Security\IdentityProof\Manager::class, function ($c) { - return new \OC\Security\IdentityProof\Manager( - $this->getServer()->query(\OC\Files\AppData\Factory::class), - $this->getServer()->getCrypto(), - $this->getServer()->getConfig() - ); - }); - $this->registerService('Protocol', function($c){ /** @var \OC\Server $server */ $server = $c->query('ServerContainer'); @@ -197,7 +164,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { return new Dispatcher( $c['Protocol'], $c['MiddlewareDispatcher'], - $c['ControllerMethodReflector'], + $c->query(IControllerMethodReflector::class), $c['Request'] ); }); @@ -219,7 +186,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { return new SecurityMiddleware( $c['Request'], - $c['ControllerMethodReflector'], + $server->query(IControllerMethodReflector::class), $server->getNavigationManager(), $server->getURLGenerator(), $server->getLogger(), @@ -239,7 +206,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { $server = $app->getServer(); return new OC\AppFramework\Middleware\Security\PasswordConfirmationMiddleware( - $c['ControllerMethodReflector'], + $c->query(IControllerMethodReflector::class), $server->getSession(), $server->getUserSession(), $server->query(ITimeFactory::class) @@ -251,7 +218,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { $server = $app->getServer(); return new OC\AppFramework\Middleware\Security\BruteForceMiddleware( - $c['ControllerMethodReflector'], + $c->query(IControllerMethodReflector::class), $server->getBruteForceThrottler(), $server->getRequest() ); @@ -264,7 +231,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { return new RateLimitingMiddleware( $server->getRequest(), $server->getUserSession(), - $c['ControllerMethodReflector'], + $c->query(IControllerMethodReflector::class), $c->query(OC\Security\RateLimiting\Limiter::class) ); }); @@ -272,7 +239,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { $this->registerService('CORSMiddleware', function($c) { return new CORSMiddleware( $c['Request'], - $c['ControllerMethodReflector'], + $c->query(IControllerMethodReflector::class), $c->query(IUserSession::class), $c->getServer()->getBruteForceThrottler() ); @@ -281,7 +248,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { $this->registerService('SessionMiddleware', function($c) use ($app) { return new SessionMiddleware( $c['Request'], - $c['ControllerMethodReflector'], + $c->query(IControllerMethodReflector::class), $app->getServer()->getSession() ); }); @@ -291,7 +258,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { $userSession = $app->getServer()->getUserSession(); $session = $app->getServer()->getSession(); $urlGenerator = $app->getServer()->getURLGenerator(); - $reflector = $c['ControllerMethodReflector']; + $reflector = $c->query(IControllerMethodReflector::class); $request = $app->getServer()->getRequest(); return new TwoFactorMiddleware($twoFactorManager, $userSession, $session, $urlGenerator, $reflector, $request); }); @@ -305,7 +272,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { $this->registerService(OC\AppFramework\Middleware\Security\SameSiteCookieMiddleware::class, function (SimpleContainer $c) { return new OC\AppFramework\Middleware\Security\SameSiteCookieMiddleware( $c['Request'], - $c['ControllerMethodReflector'] + $c->query(IControllerMethodReflector::class) ); }); diff --git a/lib/private/AppFramework/Utility/SimpleContainer.php b/lib/private/AppFramework/Utility/SimpleContainer.php index 47a6f95f74..6c2844e681 100644 --- a/lib/private/AppFramework/Utility/SimpleContainer.php +++ b/lib/private/AppFramework/Utility/SimpleContainer.php @@ -176,5 +176,4 @@ class SimpleContainer extends Container implements IContainer { } return $name; } - } diff --git a/lib/private/Server.php b/lib/private/Server.php index 204345708b..938c54b8a1 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -217,7 +217,7 @@ class Server extends ServerContainer implements IServerContainer { ); }); - $this->registerService('EncryptionManager', function (Server $c) { + $this->registerService(\OCP\Encryption\IManager::class, function (Server $c) { $view = new View(); $util = new Encryption\Util( $view, @@ -234,6 +234,7 @@ class Server extends ServerContainer implements IServerContainer { new ArrayCache() ); }); + $this->registerAlias('EncryptionManager', \OCP\Encryption\IManager::class); $this->registerService('EncryptionFileHelper', function (Server $c) { $util = new Encryption\Util( @@ -361,7 +362,7 @@ class Server extends ServerContainer implements IServerContainer { }); $this->registerAlias(IProvider::class, Authentication\Token\Manager::class); - $this->registerService(\OCP\IUserSession::class, function (Server $c) { + $this->registerService(\OC\User\Session::class, function (Server $c) { $manager = $c->getUserManager(); $session = new \OC\Session\Memory(''); $timeFactory = new TimeFactory(); @@ -430,7 +431,8 @@ class Server extends ServerContainer implements IServerContainer { }); return $userSession; }); - $this->registerAlias('UserSession', \OCP\IUserSession::class); + $this->registerAlias(\OCP\IUserSession::class, \OC\User\Session::class); + $this->registerAlias('UserSession', \OC\User\Session::class); $this->registerAlias(\OCP\Authentication\TwoFactorAuth\IRegistry::class, \OC\Authentication\TwoFactorAuth\Registry::class); @@ -1083,6 +1085,7 @@ class Server extends ServerContainer implements IServerContainer { return $instance; }); $this->registerAlias('CollaboratorSearch', \OCP\Collaboration\Collaborators\ISearch::class); + $this->registerAlias(\OCP\Collaboration\Collaborators\ISearchResult::class, \OC\Collaboration\Collaborators\SearchResult::class); $this->registerAlias(\OCP\Collaboration\AutoComplete\IManager::class, \OC\Collaboration\AutoComplete\Manager::class); @@ -1188,6 +1191,14 @@ class Server extends ServerContainer implements IServerContainer { $this->registerAlias(IDashboardManager::class, DashboardManager::class); $this->registerAlias(IFullTextSearchManager::class, FullTextSearchManager::class); + $this->registerService(\OC\Security\IdentityProof\Manager::class, function (Server $c) { + return new \OC\Security\IdentityProof\Manager( + $c->query(\OC\Files\AppData\Factory::class), + $c->getCrypto(), + $c->getConfig() + ); + }); + $this->connectDispatcher(); } diff --git a/tests/lib/AppFramework/AppTest.php b/tests/lib/AppFramework/AppTest.php index 93b8768e67..b31f442877 100644 --- a/tests/lib/AppFramework/AppTest.php +++ b/tests/lib/AppFramework/AppTest.php @@ -25,6 +25,8 @@ namespace Test\AppFramework; use OC\AppFramework\App; +use OC\AppFramework\Http\Dispatcher; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\Response; @@ -60,16 +62,9 @@ class AppTest extends \Test\TestCase { parent::setUp(); $this->container = new \OC\AppFramework\DependencyInjection\DIContainer('test', array()); - $this->controller = $this->getMockBuilder( - 'OCP\AppFramework\Controller') - ->disableOriginalConstructor() - ->getMock(); - $this->dispatcher = $this->getMockBuilder( - 'OC\AppFramework\Http\Dispatcher') - ->disableOriginalConstructor() - ->getMock(); - - $this->io = $this->getMockBuilder('OCP\\AppFramework\\Http\\IOutput')->getMock(); + $this->controller = $this->createMock(Controller::class); + $this->dispatcher = $this->createMock(Dispatcher::class); + $this->io = $this->createMock(Http\IOutput::class); $this->headers = array('key' => 'value'); $this->output = 'hi'; diff --git a/tests/lib/AppFramework/DependencyInjection/DIContainerTest.php b/tests/lib/AppFramework/DependencyInjection/DIContainerTest.php index d4581aaaf2..5f089e9601 100644 --- a/tests/lib/AppFramework/DependencyInjection/DIContainerTest.php +++ b/tests/lib/AppFramework/DependencyInjection/DIContainerTest.php @@ -40,7 +40,6 @@ class DIContainerTest extends \Test\TestCase { /** @var DIContainer|\PHPUnit_Framework_MockObject_MockObject */ private $container; - private $api; protected function setUp(){ parent::setUp(); @@ -78,12 +77,8 @@ class DIContainerTest extends \Test\TestCase { public function testMiddlewareDispatcherIncludesSecurityMiddleware(){ $this->container['Request'] = new Request( ['method' => 'GET'], - $this->getMockBuilder(ISecureRandom::class) - ->disableOriginalConstructor() - ->getMock(), - $this->getMockBuilder(IConfig::class) - ->disableOriginalConstructor() - ->getMock() + $this->createMock(ISecureRandom::class), + $this->createMock(IConfig::class) ); $security = $this->container['SecurityMiddleware']; $dispatcher = $this->container['MiddlewareDispatcher'];