summaryrefslogtreecommitdiffstats
path: root/apps/oauth2/lib/Controller/SettingsController.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/oauth2/lib/Controller/SettingsController.php')
-rw-r--r--apps/oauth2/lib/Controller/SettingsController.php28
1 files changed, 26 insertions, 2 deletions
diff --git a/apps/oauth2/lib/Controller/SettingsController.php b/apps/oauth2/lib/Controller/SettingsController.php
index 046e6d77041..872288064dd 100644
--- a/apps/oauth2/lib/Controller/SettingsController.php
+++ b/apps/oauth2/lib/Controller/SettingsController.php
@@ -30,6 +30,7 @@ declare(strict_types=1);
*/
namespace OCA\OAuth2\Controller;
+use OC\Authentication\Token\IProvider as IAuthTokenProvider;
use OCA\OAuth2\Db\AccessTokenMapper;
use OCA\OAuth2\Db\Client;
use OCA\OAuth2\Db\ClientMapper;
@@ -38,6 +39,8 @@ use OCP\AppFramework\Http;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IL10N;
use OCP\IRequest;
+use OCP\IUser;
+use OCP\IUserManager;
use OCP\Security\ISecureRandom;
class SettingsController extends Controller {
@@ -49,7 +52,12 @@ class SettingsController extends Controller {
private $accessTokenMapper;
/** @var IL10N */
private $l;
-
+ /** @var IAuthTokenProvider */
+ private $tokenProvider;
+ /**
+ * @var IUserManager
+ */
+ private $userManager;
public const validChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
public function __construct(string $appName,
@@ -57,13 +65,17 @@ class SettingsController extends Controller {
ClientMapper $clientMapper,
ISecureRandom $secureRandom,
AccessTokenMapper $accessTokenMapper,
- IL10N $l
+ IL10N $l,
+ IAuthTokenProvider $tokenProvider,
+ IUserManager $userManager
) {
parent::__construct($appName, $request);
$this->secureRandom = $secureRandom;
$this->clientMapper = $clientMapper;
$this->accessTokenMapper = $accessTokenMapper;
$this->l = $l;
+ $this->tokenProvider = $tokenProvider;
+ $this->userManager = $userManager;
}
public function addClient(string $name,
@@ -92,6 +104,18 @@ class SettingsController extends Controller {
public function deleteClient(int $id): JSONResponse {
$client = $this->clientMapper->getByUid($id);
+
+ $this->userManager->callForAllUsers(function (IUser $user) use ($client) {
+ $tokens = $this->tokenProvider->getTokenByUser($user->getUID());
+ foreach ($tokens as $token) {
+ if ($token->getName() === $client->getName()) {
+ $this->tokenProvider->invalidateTokenById(
+ $user->getUID(), $token->getId()
+ );
+ }
+ }
+ });
+
$this->accessTokenMapper->deleteByClientId($id);
$this->clientMapper->delete($client);
return new JSONResponse([]);