@@ -2046,6 +2046,11 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
2046
2046
2047
2047
public async getTeam ( ctx : TraceContext , teamId : string ) : Promise < Team > {
2048
2048
traceAPIParams ( ctx , { teamId } ) ;
2049
+
2050
+ if ( ! uuidValidate ( teamId ) ) {
2051
+ throw new ResponseError ( ErrorCodes . BAD_REQUEST , "team ID must be a valid UUID" ) ;
2052
+ }
2053
+
2049
2054
this . checkAndBlockUser ( "getTeam" ) ;
2050
2055
2051
2056
const team = await this . teamDB . findTeamById ( teamId ) ;
@@ -2059,6 +2064,10 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
2059
2064
public async getTeamMembers ( ctx : TraceContext , teamId : string ) : Promise < TeamMemberInfo [ ] > {
2060
2065
traceAPIParams ( ctx , { teamId } ) ;
2061
2066
2067
+ if ( ! uuidValidate ( teamId ) ) {
2068
+ throw new ResponseError ( ErrorCodes . BAD_REQUEST , "team ID must be a valid UUID" ) ;
2069
+ }
2070
+
2062
2071
this . checkUser ( "getTeamMembers" ) ;
2063
2072
const team = await this . getTeam ( ctx , teamId ) ;
2064
2073
const members = await this . teamDB . findMembersByTeam ( team . id ) ;
@@ -2145,6 +2154,14 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
2145
2154
public async removeTeamMember ( ctx : TraceContext , teamId : string , userId : string ) : Promise < void > {
2146
2155
traceAPIParams ( ctx , { teamId, userId } ) ;
2147
2156
2157
+ if ( ! uuidValidate ( teamId ) ) {
2158
+ throw new ResponseError ( ErrorCodes . BAD_REQUEST , "team ID must be a valid UUID" ) ;
2159
+ }
2160
+
2161
+ if ( ! uuidValidate ( userId ) ) {
2162
+ throw new ResponseError ( ErrorCodes . BAD_REQUEST , "user ID must be a valid UUID" ) ;
2163
+ }
2164
+
2148
2165
const user = this . checkAndBlockUser ( "removeTeamMember" ) ;
2149
2166
// Users are free to leave any team themselves, but only owners can remove others from their teams.
2150
2167
await this . guardTeamOperation ( teamId , user . id === userId ? "get" : "update" ) ;
@@ -2167,6 +2184,10 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
2167
2184
public async getGenericInvite ( ctx : TraceContext , teamId : string ) : Promise < TeamMembershipInvite > {
2168
2185
traceAPIParams ( ctx , { teamId } ) ;
2169
2186
2187
+ if ( ! uuidValidate ( teamId ) ) {
2188
+ throw new ResponseError ( ErrorCodes . BAD_REQUEST , "team ID must be a valid UUID" ) ;
2189
+ }
2190
+
2170
2191
this . checkUser ( "getGenericInvite" ) ;
2171
2192
await this . guardTeamOperation ( teamId , "get" ) ;
2172
2193
const invite = await this . teamDB . findGenericInviteByTeamId ( teamId ) ;
@@ -2179,6 +2200,10 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
2179
2200
public async resetGenericInvite ( ctx : TraceContext , teamId : string ) : Promise < TeamMembershipInvite > {
2180
2201
traceAPIParams ( ctx , { teamId } ) ;
2181
2202
2203
+ if ( ! uuidValidate ( teamId ) ) {
2204
+ throw new ResponseError ( ErrorCodes . BAD_REQUEST , "team ID must be a valid UUID" ) ;
2205
+ }
2206
+
2182
2207
this . checkAndBlockUser ( "resetGenericInvite" ) ;
2183
2208
await this . guardTeamOperation ( teamId , "update" ) ;
2184
2209
return this . teamDB . resetGenericInvite ( teamId ) ;
0 commit comments