1818use OCP \IUserManager ;
1919use OCP \L10N \IFactory ;
2020use OCP \Security \ISecureRandom ;
21+ use Psr \Log \LoggerInterface ;
2122
2223class 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,20 +51,25 @@ 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 ' ])) {
56- foreach ($ tokenNeeded ['user_roles ' ] as $ function ) {
57- switch ($ function ) {
63+ foreach ($ tokenNeeded ['user_roles ' ] as $ user_role ) {
64+ switch ($ user_role ) {
5865 case 'owner ' :
5966 // token for the person who created the flow
60- $ functionId = $ webhookListener ->getUserId ();
61- if (is_null ($ functionId )) { // no owner uid available
67+ $ ownerId = $ webhookListener ->getUserId ();
68+ if (is_null ($ ownerId )) { // no owner uid available
6269 break ;
6370 }
6471 $ tokens ['user_roles ' ]['owner ' ] = [
65- $ functionId => $ this ->createEphemeralToken ($ functionId )
72+ $ ownerId => $ this ->createEphemeralToken ($ ownerId )
6673 ];
6774 break ;
6875 case 'trigger ' :
@@ -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 ' . $ user_role . ' not defined. ' , ['Not defined ' => $ user_role ]);
86+
7787 }
7888 }
7989 }
@@ -96,12 +106,6 @@ private function createEphemeralToken(string $userId): string {
96106 $ name ,
97107 IToken::PERMANENT_TOKEN );
98108
99- // We need the getToken() method to be able to send the token out.
100- // That method is only available in PublicKeyToken which is returned by generateToken
101- // but not declared as such, so we have to check the type here
102- if (!($ deviceToken instanceof PublicKeyToken)) { // type needed for the getToken() function
103- throw new \Exception ('Unexpected token type ' );
104- }
105109 $ this ->tokenMapper ->addEphemeralToken (
106110 $ deviceToken ->getId (),
107111 $ userId ,
0 commit comments