aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitor Mattos <vitor@php.rio>2021-10-20 14:45:33 -0300
committerJoas Schilling <coding@schilljs.com>2021-10-23 00:54:50 +0200
commitd613b320451516c466fca7b408414a0193139602 (patch)
treedc7f83af1981e3f45fae66087a496a327f93cfb4
parentb578a1e8b56f6b3ecf7dee837af6bd8265f9c0b0 (diff)
downloadnextcloud-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.php18
-rw-r--r--tests/Core/Controller/LoginControllerTest.php32
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',