diff options
author | Vitor Mattos <vitor@php.rio> | 2021-10-20 14:45:33 -0300 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2021-10-23 00:54:50 +0200 |
commit | d613b320451516c466fca7b408414a0193139602 (patch) | |
tree | dc7f83af1981e3f45fae66087a496a327f93cfb4 | |
parent | b578a1e8b56f6b3ecf7dee837af6bd8265f9c0b0 (diff) | |
download | nextcloud-server-d613b320451516c466fca7b408414a0193139602.tar.gz nextcloud-server-d613b320451516c466fca7b408414a0193139602.zip |
add check isFairUseOfFreePushService on login
Signed-off-by: Vitor Mattos <vitor@php.rio>
-rw-r--r-- | core/Controller/LoginController.php | 18 | ||||
-rw-r--r-- | tests/Core/Controller/LoginControllerTest.php | 32 |
2 files changed, 42 insertions, 8 deletions
diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php index 15ec8365c19..b68f91f986e 100644 --- a/core/Controller/LoginController.php +++ b/core/Controller/LoginController.php @@ -46,6 +46,7 @@ use OCP\AppFramework\Http\TemplateResponse; use OCP\Defaults; use OCP\IConfig; use OCP\IInitialStateService; +use OCP\IL10N; use OCP\ILogger; use OCP\IRequest; use OCP\ISession; @@ -53,6 +54,7 @@ use OCP\IURLGenerator; use OCP\IUser; use OCP\IUserManager; use OCP\IUserSession; +use OCP\Notification\IManager; use OCP\Util; class LoginController extends Controller { @@ -81,6 +83,10 @@ class LoginController extends Controller { private $initialStateService; /** @var WebAuthnManager */ private $webAuthnManager; + /** @var IManager */ + private $manager; + /** @var IL10N */ + private $l10n; public function __construct(?string $appName, IRequest $request, @@ -94,7 +100,9 @@ class LoginController extends Controller { Throttler $throttler, Chain $loginChain, IInitialStateService $initialStateService, - WebAuthnManager $webAuthnManager) { + WebAuthnManager $webAuthnManager, + IManager $manager, + IL10N $l10n) { parent::__construct($appName, $request); $this->userManager = $userManager; $this->config = $config; @@ -107,6 +115,8 @@ class LoginController extends Controller { $this->loginChain = $loginChain; $this->initialStateService = $initialStateService; $this->webAuthnManager = $webAuthnManager; + $this->manager = $manager; + $this->l10n = $l10n; } /** @@ -153,6 +163,12 @@ class LoginController extends Controller { } $loginMessages = $this->session->get('loginMessages'); + if (!$this->manager->isFairUseOfFreePushService()) { + if (!is_array($loginMessages)) { + $loginMessages = [[], []]; + } + $loginMessages[1][] = $this->l10n->t('This community release of Nextcloud is unsupported and instant notifications are unavailable.'); + } if (is_array($loginMessages)) { [$errors, $messages] = $loginMessages; $this->initialStateService->provideInitialState('core', 'loginMessages', $messages); diff --git a/tests/Core/Controller/LoginControllerTest.php b/tests/Core/Controller/LoginControllerTest.php index fe42b55db15..30a625a612b 100644 --- a/tests/Core/Controller/LoginControllerTest.php +++ b/tests/Core/Controller/LoginControllerTest.php @@ -33,12 +33,14 @@ use OCP\AppFramework\Http\TemplateResponse; use OCP\Defaults; use OCP\IConfig; use OCP\IInitialStateService; +use OCP\IL10N; use OCP\ILogger; use OCP\IRequest; use OCP\ISession; use OCP\IURLGenerator; use OCP\IUser; use OCP\IUserManager; +use OCP\Notification\IManager; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; @@ -86,6 +88,12 @@ class LoginControllerTest extends TestCase { /** @var \OC\Authentication\WebAuthn\Manager|MockObject */ private $webAuthnManager; + /** @var IManager|MockObject */ + private $notificationManager; + + /** @var IL10N|MockObject */ + private $l; + protected function setUp(): void { parent::setUp(); $this->request = $this->createMock(IRequest::class); @@ -101,6 +109,13 @@ class LoginControllerTest extends TestCase { $this->chain = $this->createMock(LoginChain::class); $this->initialStateService = $this->createMock(IInitialStateService::class); $this->webAuthnManager = $this->createMock(\OC\Authentication\WebAuthn\Manager::class); + $this->notificationManager = $this->createMock(IManager::class); + $this->l = $this->createMock(IL10N::class); + $this->l->expects($this->any()) + ->method('t') + ->willReturnCallback(function ($text, $parameters = []) { + return vsprintf($text, $parameters); + }); $this->request->method('getRemoteAddress') @@ -124,7 +139,9 @@ class LoginControllerTest extends TestCase { $this->throttler, $this->chain, $this->initialStateService, - $this->webAuthnManager + $this->webAuthnManager, + $this->notificationManager, + $this->l ); } @@ -249,6 +266,7 @@ class LoginControllerTest extends TestCase { [ 'MessageArray1', 'MessageArray2', + 'This community release of Nextcloud is unsupported and instant notifications are unavailable.', ] ); $this->initialStateService->expects($this->at(1)) @@ -278,7 +296,7 @@ class LoginControllerTest extends TestCase { ->expects($this->once()) ->method('isLoggedIn') ->willReturn(false); - $this->initialStateService->expects($this->at(2)) + $this->initialStateService->expects($this->at(4)) ->method('provideInitialState') ->with( 'core', @@ -339,14 +357,14 @@ class LoginControllerTest extends TestCase { ->method('get') ->with('LdapUser') ->willReturn($user); - $this->initialStateService->expects($this->at(0)) + $this->initialStateService->expects($this->at(2)) ->method('provideInitialState') ->with( 'core', 'loginUsername', 'LdapUser' ); - $this->initialStateService->expects($this->at(4)) + $this->initialStateService->expects($this->at(6)) ->method('provideInitialState') ->with( 'core', @@ -386,21 +404,21 @@ class LoginControllerTest extends TestCase { ->method('get') ->with('0') ->willReturn($user); - $this->initialStateService->expects($this->at(1)) + $this->initialStateService->expects($this->at(3)) ->method('provideInitialState') ->with( 'core', 'loginAutocomplete', true ); - $this->initialStateService->expects($this->at(3)) + $this->initialStateService->expects($this->at(5)) ->method('provideInitialState') ->with( 'core', 'loginResetPasswordLink', false ); - $this->initialStateService->expects($this->at(4)) + $this->initialStateService->expects($this->at(6)) ->method('provideInitialState') ->with( 'core', |