%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps/settings/lib/Settings/Personal/Security/ |
Current File : /www/varak.net/nextcloud.varak.net/apps/settings/lib/Settings/Personal/Security/Authtokens.php |
<?php declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Settings\Settings\Personal\Security; use OC\Authentication\Token\INamedToken; use OC\Authentication\Token\IProvider as IAuthTokenProvider; use OC\Authentication\Token\IToken; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Services\IInitialState; use OCP\Authentication\Exceptions\InvalidTokenException; use OCP\ISession; use OCP\IUserSession; use OCP\Session\Exceptions\SessionNotAvailableException; use OCP\Settings\ISettings; use function array_map; class Authtokens implements ISettings { /** @var IAuthTokenProvider */ private $tokenProvider; /** @var ISession */ private $session; /** @var IInitialState */ private $initialState; /** @var string|null */ private $uid; /** @var IUserSession */ private $userSession; public function __construct(IAuthTokenProvider $tokenProvider, ISession $session, IUserSession $userSession, IInitialState $initialState, ?string $UserId) { $this->tokenProvider = $tokenProvider; $this->session = $session; $this->initialState = $initialState; $this->uid = $UserId; $this->userSession = $userSession; } public function getForm(): TemplateResponse { $this->initialState->provideInitialState( 'app_tokens', $this->getAppTokens() ); $this->initialState->provideInitialState( 'can_create_app_token', $this->userSession->getImpersonatingUserID() === null ); 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 && $data['type'] !== IToken::WIPE_TOKEN; if ($sessionToken->getId() === $token->getId()) { $data['canDelete'] = false; $data['canRename'] = false; $data['current'] = true; } return $data; }, $tokens); } }