diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2019-09-09 22:12:29 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2019-09-10 16:22:41 +0200 |
commit | 41cbb05aea2a48291825d5b3879a866300f5bcec (patch) | |
tree | d399dc52e470d132ebd1ed938d75703d3ff49a20 /settings/Settings | |
parent | 15e16d4a857fbf4152a94900b2abda60da87603d (diff) | |
download | nextcloud-server-41cbb05aea2a48291825d5b3879a866300f5bcec.tar.gz nextcloud-server-41cbb05aea2a48291825d5b3879a866300f5bcec.zip |
Split personal security settings in code
Instead of one big monolitic sections this is the first step in breaking
down the settings. This should make is easiet to see what does what. As
well as nicely splitting up the sections.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'settings/Settings')
-rw-r--r-- | settings/Settings/Personal/Security.php | 84 | ||||
-rw-r--r-- | settings/Settings/Personal/Security/Authtokens.php | 107 |
2 files changed, 113 insertions, 78 deletions
diff --git a/settings/Settings/Personal/Security.php b/settings/Settings/Personal/Security.php index a009c6a12f4..29c161f9da7 100644 --- a/settings/Settings/Personal/Security.php +++ b/settings/Settings/Personal/Security.php @@ -49,69 +49,37 @@ class Security implements ISettings { /** @var IUserManager */ private $userManager; - /** @var TwoFactorManager */ - private $twoFactorManager; - - /** @var IAuthTokenProvider */ - private $tokenProvider; - /** @var ProviderLoader */ private $providerLoader; /** @var IUserSession */ private $userSession; - /** @var ISession */ - private $session; - - /** @var IInitialStateService */ - private $initialStateService; - /** - * @var string|null - */ + /** @var string|null */ private $uid; - /** - *@var IConfig - */ + + /** @var IConfig */ private $config; public function __construct(IUserManager $userManager, - TwoFactorManager $providerManager, - IAuthTokenProvider $tokenProvider, ProviderLoader $providerLoader, IUserSession $userSession, - ISession $session, IConfig $config, - IInitialStateService $initialStateService, ?string $UserId) { $this->userManager = $userManager; - $this->twoFactorManager = $providerManager; - $this->tokenProvider = $tokenProvider; $this->providerLoader = $providerLoader; $this->userSession = $userSession; - $this->session = $session; - $this->initialStateService = $initialStateService; $this->uid = $UserId; $this->config = $config; } - /** - * @return TemplateResponse returns the instance with all parameters set, ready to be rendered - * @since 9.1 - */ - public function getForm() { + public function getForm(): TemplateResponse { $user = $this->userManager->get($this->uid); $passwordChangeSupported = false; if ($user !== null) { $passwordChangeSupported = $user->canChangePassword(); } - $this->initialStateService->provideInitialState( - 'settings', - 'app_tokens', - $this->getAppTokens() - ); - return new TemplateResponse('settings', 'settings/personal/security', [ 'passwordChangeSupported' => $passwordChangeSupported, 'twoFactorProviderData' => $this->getTwoFactorProviderData(), @@ -119,23 +87,11 @@ class Security implements ISettings { ]); } - /** - * @return string the section ID, e.g. 'sharing' - * @since 9.1 - */ - public function getSection() { + public function getSection(): string { return 'security'; } - /** - * @return int whether the form should be rather on the top or bottom of - * the admin section. The forms are arranged in ascending order of the - * priority values. It is required to return a value between 0 and 100. - * - * E.g.: 70 - * @since 9.1 - */ - public function getPriority() { + public function getPriority(): int { return 10; } @@ -157,32 +113,4 @@ class Security implements ISettings { })) ]; } - - private function getAppTokens(): array { - $tokens = $this->tokenProvider->getTokenByUser($this->uid); - - try { - $sessionId = $this->session->getId(); - } catch (SessionNotAvailableException $ex) { - return []; - } - try { - $sessionToken = $this->tokenProvider->getToken($sessionId); - } catch (InvalidTokenException $ex) { - return []; - } - - return array_map(function (IToken $token) use ($sessionToken) { - $data = $token->jsonSerialize(); - $data['canDelete'] = true; - $data['canRename'] = $token instanceof INamedToken; - if ($sessionToken->getId() === $token->getId()) { - $data['canDelete'] = false; - $data['canRename'] = false; - $data['current'] = true; - } - return $data; - }, $tokens); - } - } diff --git a/settings/Settings/Personal/Security/Authtokens.php b/settings/Settings/Personal/Security/Authtokens.php new file mode 100644 index 00000000000..237ea1608ad --- /dev/null +++ b/settings/Settings/Personal/Security/Authtokens.php @@ -0,0 +1,107 @@ +<?php +declare(strict_types=1); +/** + * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OC\Settings\Personal\Security; + +use function array_map; +use OC\Authentication\Exceptions\InvalidTokenException; +use OC\Authentication\Token\INamedToken; +use OC\Authentication\Token\IProvider as IAuthTokenProvider; +use OC\Authentication\Token\IToken; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IInitialStateService; +use OCP\ISession; +use OCP\Session\Exceptions\SessionNotAvailableException; +use OCP\Settings\ISettings; + +class Authtokens implements ISettings { + + /** @var IAuthTokenProvider */ + private $tokenProvider; + + /** @var ISession */ + private $session; + + /** @var IInitialStateService */ + private $initialStateService; + + /** @var string|null */ + private $uid; + + public function __construct(IAuthTokenProvider $tokenProvider, + ISession $session, + IInitialStateService $initialStateService, + ?string $UserId) { + $this->tokenProvider = $tokenProvider; + $this->session = $session; + $this->initialStateService = $initialStateService; + $this->uid = $UserId; + } + + public function getForm(): TemplateResponse { + $this->initialStateService->provideInitialState( + 'settings', + 'app_tokens', + $this->getAppTokens() + ); + + return new TemplateResponse('settings', 'settings/personal/security/authtokens'); + } + + public function getSection(): string { + return 'security'; + } + + public function getPriority(): int { + return 100; + } + + private function getAppTokens(): array { + $tokens = $this->tokenProvider->getTokenByUser($this->uid); + + try { + $sessionId = $this->session->getId(); + } catch (SessionNotAvailableException $ex) { + return []; + } + try { + $sessionToken = $this->tokenProvider->getToken($sessionId); + } catch (InvalidTokenException $ex) { + return []; + } + + return array_map(function (IToken $token) use ($sessionToken) { + $data = $token->jsonSerialize(); + $data['canDelete'] = true; + $data['canRename'] = $token instanceof INamedToken; + if ($sessionToken->getId() === $token->getId()) { + $data['canDelete'] = false; + $data['canRename'] = false; + $data['current'] = true; + } + return $data; + }, $tokens); + } + +} |