Skip to content

Commit b2b3280

Browse files
committed
feat: adapt webhook payload format
Signed-off-by: Jana Peper <[email protected]>
1 parent 72ad2ed commit b2b3280

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

apps/webhook_listeners/lib/BackgroundJobs/WebhookCall.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ protected function run($argument): void {
4646
$client = $this->clientService->newClient();
4747

4848
// adding Ephemeral auth tokens to the call
49-
$data['tokens'] = $this->tokenService->getTokens($webhookListener, $data['user']['uid'] ?? null);
49+
$data['authentication'] = $this->tokenService->getTokens($webhookListener, $data['user']['uid'] ?? null);
5050
$options = [
5151
'verify' => $this->certificateManager->getAbsoluteBundlePath(),
5252
'headers' => $webhookListener->getHeaders() ?? [],

apps/webhook_listeners/lib/Service/TokenService.php

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use OCA\WebhookListeners\Db\WebhookListener;
1515
use OCP\AppFramework\Utility\ITimeFactory;
1616
use OCP\Authentication\Token\IToken;
17+
use OCP\IURLGenerator;
1718
use OCP\IUserManager;
1819
use OCP\L10N\IFactory;
1920
use OCP\Security\ISecureRandom;
@@ -22,6 +23,7 @@
2223
class TokenService {
2324
public function __construct(
2425
private IProvider $tokenProvider,
26+
private IURLGenerator $urlGenerator,
2527
private ISecureRandom $random,
2628
private EphemeralTokenMapper $tokenMapper,
2729
private LoggerInterface $logger,
@@ -35,20 +37,21 @@ public function __construct(
3537
* creates an array which includes two arrays of tokens: 'user_ids' and 'user_roles'
3638
* The array ['user_ids' => ['jane', 'bob'], 'user_roles' => ['owner', 'trigger']]
3739
* as requested tokens in the registered webhook produces a result like
38-
* ['user_ids' => [['jane' => 'abcdtokenabcd1'], ['bob','=> 'abcdtokenabcd2']], 'user_roles' => ['owner' => ['admin' => 'abcdtokenabcd3'], 'trigger' => ['user1' => 'abcdtokenabcd4']]]
40+
* ['user_ids' => [['jane' => 'abcdtokenabcd1'], ['bob','=> 'abcdtokenabcd2']], 'owner' => ['admin' => 'abcdtokenabcd3'], 'trigger' => ['user1' => 'abcdtokenabcd4']]
3941
* Created auth tokens are valid for 1 hour.
4042
*
4143
* @param WebhookListener $webhookListener
4244
* @param ?string $triggerUserId the user that triggered the webhook call
4345
* @return array{user_ids?:array<string,string>,user_roles?:array{owner?:array<string,string>,trigger?:array<string,string>}}
4446
*/
4547
public function getTokens(WebhookListener $webhookListener, ?string $triggerUserId): array {
46-
$tokens = [
47-
'user_ids' => [],
48-
'user_roles' => [],
49-
];
48+
$tokens = [];
49+
5050
$tokenNeeded = $webhookListener->getTokenNeeded();
5151
if (isset($tokenNeeded['user_ids'])) {
52+
$tokens = [
53+
'user_ids' => [],
54+
];
5255
foreach ($tokenNeeded['user_ids'] as $userId) {
5356
try {
5457
$tokens['user_ids'][$userId] = $this->createEphemeralToken($userId);
@@ -67,17 +70,19 @@ public function getTokens(WebhookListener $webhookListener, ?string $triggerUser
6770
if (is_null($ownerId)) { // no owner uid available
6871
break;
6972
}
70-
$tokens['user_roles']['owner'] = [
71-
$ownerId => $this->createEphemeralToken($ownerId)
73+
$tokens['owner'] = [
74+
'token' => $this->createEphemeralToken($ownerId),
75+
'baseUrl' => $this->urlGenerator->getBaseUrl()
7276
];
7377
break;
7478
case 'trigger':
7579
// token for the person who triggered the webhook
7680
if (is_null($triggerUserId)) { // no trigger uid available
7781
break;
7882
}
79-
$tokens['user_roles']['trigger'] = [
80-
$triggerUserId => $this->createEphemeralToken($triggerUserId)
83+
$tokens['trigger'] = [
84+
'token' => $this->createEphemeralToken($triggerUserId),
85+
'baseUrl' => $this->urlGenerator->getBaseUrl()
8186
];
8287
break;
8388
default:

0 commit comments

Comments
 (0)