1414use OCA \WebhookListeners \Db \WebhookListener ;
1515use OCP \AppFramework \Utility \ITimeFactory ;
1616use OCP \Authentication \Token \IToken ;
17+ use OCP \IURLGenerator ;
1718use OCP \IUserManager ;
1819use OCP \L10N \IFactory ;
1920use OCP \Security \ISecureRandom ;
2223class 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