Use magic DI for core controllers
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
99076a8c0d
commit
877cb06bfe
5 changed files with 35 additions and 127 deletions
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016, ownCloud, Inc.
|
||||
* @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
|
||||
*
|
||||
* @author Bernhard Posselt <dev@bernhard-posselt.com>
|
||||
* @author Christoph Wurst <christoph@owncloud.com>
|
||||
|
@ -29,13 +30,8 @@
|
|||
|
||||
namespace OC\Core;
|
||||
|
||||
use OC\AppFramework\Utility\SimpleContainer;
|
||||
use OC\AppFramework\Utility\TimeFactory;
|
||||
use OC\Core\Controller\LoginController;
|
||||
use OC\Core\Controller\LostController;
|
||||
use OC\Core\Controller\TokenController;
|
||||
use OC\Core\Controller\TwoFactorChallengeController;
|
||||
use OC\Core\Controller\UserController;
|
||||
use OC\Authentication\Token\DefaultTokenProvider;
|
||||
use OC\Authentication\Token\IProvider;
|
||||
use OCP\AppFramework\App;
|
||||
use OCP\Util;
|
||||
|
||||
|
@ -46,108 +42,13 @@ use OCP\Util;
|
|||
*/
|
||||
class Application extends App {
|
||||
|
||||
/**
|
||||
* @param array $urlParams
|
||||
*/
|
||||
public function __construct(array $urlParams=array()){
|
||||
parent::__construct('core', $urlParams);
|
||||
public function __construct() {
|
||||
parent::__construct('core');
|
||||
|
||||
$container = $this->getContainer();
|
||||
|
||||
/**
|
||||
* Controllers
|
||||
*/
|
||||
$container->registerService('LostController', function(SimpleContainer $c) {
|
||||
return new LostController(
|
||||
$c->query('AppName'),
|
||||
$c->query('Request'),
|
||||
$c->query('URLGenerator'),
|
||||
$c->query('UserManager'),
|
||||
$c->query('Defaults'),
|
||||
$c->query('L10N'),
|
||||
$c->query('Config'),
|
||||
$c->query('SecureRandom'),
|
||||
$c->query('DefaultEmailAddress'),
|
||||
$c->query('IsEncryptionEnabled'),
|
||||
$c->query('Mailer'),
|
||||
$c->query('TimeFactory')
|
||||
);
|
||||
});
|
||||
$container->registerService('LoginController', function(SimpleContainer $c) {
|
||||
return new LoginController(
|
||||
$c->query('AppName'),
|
||||
$c->query('Request'),
|
||||
$c->query('UserManager'),
|
||||
$c->query('Config'),
|
||||
$c->query('Session'),
|
||||
$c->query('UserSession'),
|
||||
$c->query('URLGenerator'),
|
||||
$c->query('TwoFactorAuthManager'),
|
||||
$c->query('ServerContainer')->getBruteforceThrottler()
|
||||
);
|
||||
});
|
||||
$container->registerService('TwoFactorChallengeController', function (SimpleContainer $c) {
|
||||
return new TwoFactorChallengeController(
|
||||
$c->query('AppName'),
|
||||
$c->query('Request'),
|
||||
$c->query('TwoFactorAuthManager'),
|
||||
$c->query('UserSession'),
|
||||
$c->query('Session'),
|
||||
$c->query('URLGenerator'));
|
||||
});
|
||||
$container->registerService('TokenController', function(SimpleContainer $c) {
|
||||
return new TokenController(
|
||||
$c->query('AppName'),
|
||||
$c->query('Request'),
|
||||
$c->query('UserManager'),
|
||||
$c->query('ServerContainer')->query('OC\Authentication\Token\IProvider'),
|
||||
$c->query('TwoFactorAuthManager'),
|
||||
$c->query('SecureRandom')
|
||||
);
|
||||
});
|
||||
|
||||
/**
|
||||
* Core class wrappers
|
||||
*/
|
||||
$container->registerService('IsEncryptionEnabled', function(SimpleContainer $c) {
|
||||
return $c->query('ServerContainer')->getEncryptionManager()->isEnabled();
|
||||
});
|
||||
$container->registerService('URLGenerator', function(SimpleContainer $c) {
|
||||
return $c->query('ServerContainer')->getURLGenerator();
|
||||
});
|
||||
$container->registerService('UserManager', function(SimpleContainer $c) {
|
||||
return $c->query('ServerContainer')->getUserManager();
|
||||
});
|
||||
$container->registerService('Config', function(SimpleContainer $c) {
|
||||
return $c->query('ServerContainer')->getConfig();
|
||||
});
|
||||
$container->registerService('L10N', function(SimpleContainer $c) {
|
||||
return $c->query('ServerContainer')->getL10N('core');
|
||||
});
|
||||
$container->registerService('SecureRandom', function(SimpleContainer $c) {
|
||||
return $c->query('ServerContainer')->getSecureRandom();
|
||||
});
|
||||
$container->registerService('Session', function(SimpleContainer $c) {
|
||||
return $c->query('ServerContainer')->getSession();
|
||||
});
|
||||
$container->registerService('UserSession', function(SimpleContainer $c) {
|
||||
return $c->query('ServerContainer')->getUserSession();
|
||||
});
|
||||
$container->registerService('Defaults', function(SimpleContainer $c) {
|
||||
return $c->query('ServerContainer')->getThemingDefaults();
|
||||
});
|
||||
$container->registerService('Mailer', function(SimpleContainer $c) {
|
||||
return $c->query('ServerContainer')->getMailer();
|
||||
});
|
||||
$container->registerService('TimeFactory', function(SimpleContainer $c) {
|
||||
return new TimeFactory();
|
||||
});
|
||||
$container->registerService('DefaultEmailAddress', function() {
|
||||
$container->registerService('defaultMailAddress', function() {
|
||||
return Util::getDefaultEmailAddress('lostpassword-noreply');
|
||||
});
|
||||
$container->registerService('TwoFactorAuthManager', function(SimpleContainer $c) {
|
||||
return $c->query('ServerContainer')->getTwoFactorAuthManager();
|
||||
});
|
||||
$container->registerAlias(IProvider::class, DefaultTokenProvider::class);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -33,12 +33,14 @@ use OC_Util;
|
|||
use OCP\AppFramework\Controller;
|
||||
use OCP\AppFramework\Http\RedirectResponse;
|
||||
use OCP\AppFramework\Http\TemplateResponse;
|
||||
use OCP\Authentication\TwoFactorAuth\IProvider;
|
||||
use OCP\IConfig;
|
||||
use OCP\IRequest;
|
||||
use OCP\ISession;
|
||||
use OCP\IURLGenerator;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserManager;
|
||||
use OCP\IUserSession;
|
||||
|
||||
class LoginController extends Controller {
|
||||
/** @var IUserManager */
|
||||
|
@ -47,7 +49,7 @@ class LoginController extends Controller {
|
|||
private $config;
|
||||
/** @var ISession */
|
||||
private $session;
|
||||
/** @var Session */
|
||||
/** @var IUserSession|Session */
|
||||
private $userSession;
|
||||
/** @var IURLGenerator */
|
||||
private $urlGenerator;
|
||||
|
@ -62,7 +64,7 @@ class LoginController extends Controller {
|
|||
* @param IUserManager $userManager
|
||||
* @param IConfig $config
|
||||
* @param ISession $session
|
||||
* @param Session $userSession
|
||||
* @param IUserSession $userSession
|
||||
* @param IURLGenerator $urlGenerator
|
||||
* @param Manager $twoFactorManager
|
||||
* @param Throttler $throttler
|
||||
|
@ -72,7 +74,7 @@ class LoginController extends Controller {
|
|||
IUserManager $userManager,
|
||||
IConfig $config,
|
||||
ISession $session,
|
||||
Session $userSession,
|
||||
IUserSession $userSession,
|
||||
IURLGenerator $urlGenerator,
|
||||
Manager $twoFactorManager,
|
||||
Throttler $throttler) {
|
||||
|
|
|
@ -33,6 +33,7 @@ namespace OC\Core\Controller;
|
|||
use \OCP\AppFramework\Controller;
|
||||
use \OCP\AppFramework\Http\TemplateResponse;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\Encryption\IManager;
|
||||
use \OCP\IURLGenerator;
|
||||
use \OCP\IRequest;
|
||||
use \OCP\IL10N;
|
||||
|
@ -60,8 +61,8 @@ class LostController extends Controller {
|
|||
protected $l10n;
|
||||
/** @var string */
|
||||
protected $from;
|
||||
/** @var bool */
|
||||
protected $isDataEncrypted;
|
||||
/** @var IManager */
|
||||
protected $encryptionManager;
|
||||
/** @var IConfig */
|
||||
protected $config;
|
||||
/** @var ISecureRandom */
|
||||
|
@ -80,8 +81,8 @@ class LostController extends Controller {
|
|||
* @param IL10N $l10n
|
||||
* @param IConfig $config
|
||||
* @param ISecureRandom $secureRandom
|
||||
* @param string $from
|
||||
* @param string $isDataEncrypted
|
||||
* @param string $defaultMailAddress
|
||||
* @param IManager $encryptionManager
|
||||
* @param IMailer $mailer
|
||||
* @param ITimeFactory $timeFactory
|
||||
*/
|
||||
|
@ -93,8 +94,8 @@ class LostController extends Controller {
|
|||
IL10N $l10n,
|
||||
IConfig $config,
|
||||
ISecureRandom $secureRandom,
|
||||
$from,
|
||||
$isDataEncrypted,
|
||||
$defaultMailAddress,
|
||||
IManager $encryptionManager,
|
||||
IMailer $mailer,
|
||||
ITimeFactory $timeFactory) {
|
||||
parent::__construct($appName, $request);
|
||||
|
@ -103,8 +104,8 @@ class LostController extends Controller {
|
|||
$this->defaults = $defaults;
|
||||
$this->l10n = $l10n;
|
||||
$this->secureRandom = $secureRandom;
|
||||
$this->from = $from;
|
||||
$this->isDataEncrypted = $isDataEncrypted;
|
||||
$this->from = $defaultMailAddress;
|
||||
$this->encryptionManager = $encryptionManager;
|
||||
$this->config = $config;
|
||||
$this->mailer = $mailer;
|
||||
$this->timeFactory = $timeFactory;
|
||||
|
@ -207,7 +208,7 @@ class LostController extends Controller {
|
|||
* @return array
|
||||
*/
|
||||
public function setPassword($token, $userId, $password, $proceed) {
|
||||
if ($this->isDataEncrypted && !$proceed) {
|
||||
if ($this->encryptionManager->isEnabled() && !$proceed) {
|
||||
return $this->error('', array('encryption' => true));
|
||||
}
|
||||
|
||||
|
|
|
@ -27,14 +27,14 @@ use OC\AppFramework\Http;
|
|||
use OC\Authentication\Token\IProvider;
|
||||
use OC\Authentication\Token\IToken;
|
||||
use OC\Authentication\TwoFactorAuth\Manager as TwoFactorAuthManager;
|
||||
use OC\User\Manager as UserManager;
|
||||
use OCP\AppFramework\Controller;
|
||||
use OCP\AppFramework\Http\JSONResponse;
|
||||
use OCP\IRequest;
|
||||
use OCP\IUserManager;
|
||||
use OCP\Security\ISecureRandom;
|
||||
|
||||
class TokenController extends Controller {
|
||||
/** @var UserManager */
|
||||
/** @var IUserManager */
|
||||
private $userManager;
|
||||
/** @var IProvider */
|
||||
private $tokenProvider;
|
||||
|
@ -46,14 +46,14 @@ class TokenController extends Controller {
|
|||
/**
|
||||
* @param string $appName
|
||||
* @param IRequest $request
|
||||
* @param UserManager $userManager
|
||||
* @param IUserManager $userManager
|
||||
* @param IProvider $tokenProvider
|
||||
* @param TwoFactorAuthManager $twoFactorAuthManager
|
||||
* @param ISecureRandom $secureRandom
|
||||
*/
|
||||
public function __construct($appName,
|
||||
IRequest $request,
|
||||
UserManager $userManager,
|
||||
IUserManager $userManager,
|
||||
IProvider $tokenProvider,
|
||||
TwoFactorAuthManager $twoFactorAuthManager,
|
||||
ISecureRandom $secureRandom) {
|
||||
|
|
|
@ -24,6 +24,7 @@ namespace Tests\Core\Controller;
|
|||
use OC\Core\Controller\LostController;
|
||||
use OCP\AppFramework\Http\TemplateResponse;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\Encryption\IManager;
|
||||
use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
use OCP\IRequest;
|
||||
|
@ -59,6 +60,8 @@ class LostControllerTest extends \PHPUnit_Framework_TestCase {
|
|||
private $mailer;
|
||||
/** @var ISecureRandom | PHPUnit_Framework_MockObject_MockObject */
|
||||
private $secureRandom;
|
||||
/** @var IManager|PHPUnit_Framework_MockObject_MockObject */
|
||||
private $encryptionManager;
|
||||
/** @var ITimeFactory | PHPUnit_Framework_MockObject_MockObject */
|
||||
private $timeFactory;
|
||||
/** @var IRequest */
|
||||
|
@ -98,6 +101,11 @@ class LostControllerTest extends \PHPUnit_Framework_TestCase {
|
|||
->disableOriginalConstructor()->getMock();
|
||||
$this->request = $this->getMockBuilder('OCP\IRequest')
|
||||
->disableOriginalConstructor()->getMock();
|
||||
$this->encryptionManager = $this->getMockBuilder(IManager::class)
|
||||
->disableOriginalConstructor()->getMock();
|
||||
$this->encryptionManager->expects($this->any())
|
||||
->method('isEnabled')
|
||||
->willReturn(true);
|
||||
$this->lostController = new LostController(
|
||||
'Core',
|
||||
$this->request,
|
||||
|
@ -108,7 +116,7 @@ class LostControllerTest extends \PHPUnit_Framework_TestCase {
|
|||
$this->config,
|
||||
$this->secureRandom,
|
||||
'lostpassword-noreply@localhost',
|
||||
true,
|
||||
$this->encryptionManager,
|
||||
$this->mailer,
|
||||
$this->timeFactory
|
||||
);
|
||||
|
@ -162,8 +170,6 @@ class LostControllerTest extends \PHPUnit_Framework_TestCase {
|
|||
|
||||
|
||||
public function testResetFormExpiredToken() {
|
||||
$userId = 'ValidTokenUser';
|
||||
$token = '12345:TheOnlyAndOnlyOneTokenToResetThePassword';
|
||||
$user = $this->getMockBuilder('\OCP\IUser')
|
||||
->disableOriginalConstructor()->getMock();
|
||||
$this->userManager
|
||||
|
@ -195,8 +201,6 @@ class LostControllerTest extends \PHPUnit_Framework_TestCase {
|
|||
}
|
||||
|
||||
public function testResetFormValidToken() {
|
||||
$userId = 'ValidTokenUser';
|
||||
$token = '12345:TheOnlyAndOnlyOneTokenToResetThePassword';
|
||||
$user = $this->getMockBuilder('\OCP\IUser')
|
||||
->disableOriginalConstructor()->getMock();
|
||||
$user
|
||||
|
|
Loading…
Reference in a new issue