@@ -10,8 +10,6 @@ import { GitpodToken, GitpodTokenType } from "@gitpod/gitpod-protocol";
10
10
import { log } from "@gitpod/gitpod-protocol/lib/util/logging" ;
11
11
import { inject , injectable } from "inversify" ;
12
12
import { Authorizer } from "../authorization/authorizer" ;
13
- import { GuardedResource , ResourceAccessGuard , ResourceAccessOp } from "../auth/resource-access" ;
14
- import { ApplicationError , ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error" ;
15
13
16
14
@injectable ( )
17
15
export class GitpodTokenService {
@@ -23,21 +21,21 @@ export class GitpodTokenService {
23
21
async getGitpodTokens (
24
22
requestorId : string ,
25
23
userId : string ,
26
- resouceGuardAccess : ResourceAccessGuard ,
24
+ oldPermissionCheck ?: ( token : GitpodToken ) => Promise < void > , // @deprecated
27
25
) : Promise < GitpodToken [ ] > {
28
26
await this . auth . checkPermissionOnUser ( requestorId , "read_tokens" , userId ) ;
29
27
const res = ( await this . userDB . findAllGitpodTokensOfUser ( userId ) ) . filter ( ( v ) => ! v . deleted ) ;
30
- await Promise . all (
31
- res . map ( ( tkn ) => this . guardAccess ( resouceGuardAccess , { kind : "gitpodToken" , subject : tkn } , "get" ) ) ,
32
- ) ;
28
+ if ( oldPermissionCheck ) {
29
+ await Promise . all ( res . map ( ( tkn ) => oldPermissionCheck ( tkn ) ) ) ;
30
+ }
33
31
return res ;
34
32
}
35
33
36
34
async generateNewGitpodToken (
37
35
requestorId : string ,
38
36
userId : string ,
39
37
options : { name ?: string ; type : GitpodTokenType ; scopes ?: string [ ] } ,
40
- resouceGuardAccess : ResourceAccessGuard ,
38
+ oldPermissionCheck ?: ( dbToken : DBGitpodToken ) => Promise < void > , // @deprecated
41
39
) : Promise < string > {
42
40
await this . auth . checkPermissionOnUser ( requestorId , "write_tokens" , userId ) ;
43
41
const token = crypto . randomBytes ( 30 ) . toString ( "hex" ) ;
@@ -50,7 +48,9 @@ export class GitpodTokenService {
50
48
scopes : options . scopes || [ ] ,
51
49
created : new Date ( ) . toISOString ( ) ,
52
50
} ;
53
- await this . guardAccess ( resouceGuardAccess , { kind : "gitpodToken" , subject : dbToken } , "create" ) ;
51
+ if ( oldPermissionCheck ) {
52
+ await oldPermissionCheck ( dbToken ) ;
53
+ }
54
54
await this . userDB . storeGitpodToken ( dbToken ) ;
55
55
return token ;
56
56
}
@@ -59,7 +59,7 @@ export class GitpodTokenService {
59
59
requestorId : string ,
60
60
userId : string ,
61
61
tokenHash : string ,
62
- resouceGuardAccess : ResourceAccessGuard ,
62
+ oldPermissionCheck ?: ( token : GitpodToken ) => Promise < void > , // @deprecated
63
63
) : Promise < string [ ] > {
64
64
await this . auth . checkPermissionOnUser ( requestorId , "read_tokens" , userId ) ;
65
65
let token : GitpodToken | undefined ;
@@ -72,39 +72,27 @@ export class GitpodTokenService {
72
72
if ( ! token || token . deleted ) {
73
73
return [ ] ;
74
74
}
75
- await this . guardAccess ( resouceGuardAccess , { kind : "gitpodToken" , subject : token } , "get" ) ;
75
+ if ( oldPermissionCheck ) {
76
+ await oldPermissionCheck ( token ) ;
77
+ }
76
78
return token . scopes ;
77
79
}
78
80
79
81
async deleteGitpodToken (
80
82
requestorId : string ,
81
83
userId : string ,
82
84
tokenHash : string ,
83
- resouceGuardAccess : ResourceAccessGuard ,
85
+ oldPermissionCheck ?: ( token : GitpodToken ) => Promise < void > , // @deprecated
84
86
) : Promise < void > {
85
87
await this . auth . checkPermissionOnUser ( requestorId , "write_tokens" , userId ) ;
86
- const existingTokens = await this . getGitpodTokens ( requestorId , userId , resouceGuardAccess ) ;
88
+ const existingTokens = await this . getGitpodTokens ( requestorId , userId , oldPermissionCheck ) ;
87
89
const tkn = existingTokens . find ( ( token ) => token . tokenHash === tokenHash ) ;
88
90
if ( ! tkn ) {
89
91
throw new Error ( `User ${ requestorId } tries to delete a token ${ tokenHash } that does not exist.` ) ;
90
92
}
91
- await this . guardAccess ( resouceGuardAccess , { kind : "gitpodToken" , subject : tkn } , "delete" ) ;
92
- await this . userDB . deleteGitpodToken ( tokenHash ) ;
93
- }
94
-
95
- /**
96
- * @deprecated Will be removed in the near future
97
- */
98
- private async guardAccess (
99
- resouceGuardAccess : ResourceAccessGuard ,
100
- resource : GuardedResource ,
101
- op : ResourceAccessOp ,
102
- ) {
103
- if ( ! ( await resouceGuardAccess . canAccess ( resource , op ) ) ) {
104
- throw new ApplicationError (
105
- ErrorCodes . PERMISSION_DENIED ,
106
- `operation not permitted: missing ${ op } permission on ${ resource . kind } ` ,
107
- ) ;
93
+ if ( oldPermissionCheck ) {
94
+ await oldPermissionCheck ( tkn ) ;
108
95
}
96
+ await this . userDB . deleteGitpodToken ( tokenHash ) ;
109
97
}
110
98
}
0 commit comments