Skip to content

Commit be08ce8

Browse files
committed
feat: error handling
Signed-off-by: Jana Peper <[email protected]>
1 parent e9d0c05 commit be08ce8

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

apps/webhook_listeners/lib/Db/EphemeralTokenMapper.php

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public function getById(int $id): EphemeralToken {
5252
}
5353

5454
/**
55-
* @throws \Exception
55+
* @throws Exception
5656
* @return EphemeralToken[]
5757
*/
5858
public function getAll(): array {
@@ -64,6 +64,12 @@ public function getAll(): array {
6464
return $this->findEntities($qb);
6565
}
6666

67+
68+
/**
69+
* @param int $olderThan
70+
* @return EphemeralToken[]
71+
* @throws Exception
72+
*/
6773
public function getOlderThan($olderThan): array {
6874
$qb = $this->db->getQueryBuilder();
6975

@@ -106,12 +112,23 @@ public function deleteByTokenId(int $tokenId): bool {
106112

107113
public function invalidateOldTokens(int $token_lifetime = self::TOKEN_LIFETIME) {
108114
$olderThan = $this->time->getTime() - $token_lifetime;
109-
$tokensToDelete = $this->getOlderThan($olderThan);
115+
try {
116+
$tokensToDelete = $this->getOlderThan($olderThan);
117+
} catch (Exception $e) {
118+
$this->logger->error('Webhook token deletion failed: ' . $e->getMessage(), ['exception' => $e]);
119+
return;
120+
}
121+
110122

111123
$this->logger->debug('Invalidating ephemeral webhook tokens older than ' . date('c', $olderThan), ['app' => 'webhook_listeners']);
112124
foreach ($tokensToDelete as $token) {
113-
$this->tokenMapper->invalidate($this->tokenMapper->getTokenById($token->getTokenId())->getToken()); // delete token itself
114-
$this->deleteByTokenId($token->getTokenId()); // delete db row in webhook_tokens
125+
try {
126+
$this->tokenMapper->invalidate($this->tokenMapper->getTokenById($token->getTokenId())->getToken()); // delete token itself
127+
$this->deleteByTokenId($token->getTokenId()); // delete db row in webhook_tokens
128+
} catch (Exception $e) {
129+
$this->logger->error('Webhook token deletion failed: ' . $e->getMessage(), ['exception' => $e]);
130+
}
131+
115132
}
116133
}
117134
}

apps/webhook_listeners/lib/Service/TokenService.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@
1818
use OCP\IUserManager;
1919
use OCP\L10N\IFactory;
2020
use OCP\Security\ISecureRandom;
21+
use Psr\Log\LoggerInterface;
2122

2223
class TokenService {
2324
public function __construct(
2425
private IProvider $tokenProvider,
2526
private ISecureRandom $random,
2627
private EphemeralTokenMapper $tokenMapper,
28+
private LoggerInterface $logger,
2729
private ITimeFactory $time,
2830
private IFactory $l10nFactory,
2931
private IUserManager $userManager,
@@ -49,7 +51,12 @@ public function getTokens(WebhookListener $webhookListener, ?string $triggerUser
4951
$tokenNeeded = $webhookListener->getTokenNeeded();
5052
if (isset($tokenNeeded['user_ids'])) {
5153
foreach ($tokenNeeded['user_ids'] as $userId) {
52-
$tokens['user_ids'][$userId] = $this->createEphemeralToken($userId);
54+
try {
55+
$tokens['user_ids'][$userId] = $this->createEphemeralToken($userId);
56+
} catch (\Exception $e) {
57+
$this->logger->error('Webhook token creation for user ' . $userId . ' failed: ' . $e->getMessage(), ['exception' => $e]);
58+
}
59+
5360
}
5461
}
5562
if (isset($tokenNeeded['user_roles'])) {
@@ -74,6 +81,9 @@ public function getTokens(WebhookListener $webhookListener, ?string $triggerUser
7481
$triggerUserId => $this->createEphemeralToken($triggerUserId)
7582
];
7683
break;
84+
default:
85+
$this->logger->error('Webhook token creation for user role ' . $function . ' not defined. ' . $e->getMessage(), ['exception' => $e]);
86+
7787
}
7888
}
7989
}

0 commit comments

Comments
 (0)