2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								package  api 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								import  ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-19 20:34:28 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"errors" 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-29 17:18:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"net/http" 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-15 00:55:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"strconv" 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-19 20:34:28 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-21 04:20:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/grafana/grafana/pkg/api/dtos" 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/grafana/grafana/pkg/api/response" 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-04 19:57:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/grafana/grafana/pkg/models" 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-10 17:56:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/grafana/grafana/pkg/services/org" 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									"github.com/grafana/grafana/pkg/util" 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-29 17:18:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/grafana/grafana/pkg/web" 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-27 21:54:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// swagger:route POST /teams teams createTeam
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Add Team.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Responses:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 200: createTeamResponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 401: unauthorisedError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 403: forbiddenError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 409: conflictError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 500: internalServerError
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-29 17:18:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  ( hs  * HTTPServer )  CreateTeam ( c  * models . ReqContext )  response . Response  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									cmd  :=  models . CreateTeamCommand { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  :=  web . Bind ( c . Req ,  & cmd ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  response . Error ( http . StatusBadRequest ,  "bad request data" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-25 16:42:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									accessControlEnabled  :=  ! hs . AccessControl . IsDisabled ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-10 17:56:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ! accessControlEnabled  &&  c . OrgRole  ==  org . RoleViewer  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  response . Error ( 403 ,  "Not allowed to create team." ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-13 17:38:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-03 16:20:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									team ,  err  :=  hs . SQLStore . CreateTeam ( cmd . Name ,  cmd . Email ,  c . OrgId ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-17 23:06:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-19 20:34:28 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  errors . Is ( err ,  models . ErrTeamNameTaken )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  response . Error ( 409 ,  "Team name taken" ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  response . Error ( 500 ,  "Failed to create Team" ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-10 17:56:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  accessControlEnabled  ||  ( c . OrgRole  ==  org . RoleEditor  &&  hs . Cfg . EditorsCanAdmin )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-08 16:27:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// if the request is authenticated using API tokens
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										// the SignedInUser is an empty struct therefore
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										// an additional check whether it is an actual user is required
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  c . SignedInUser . IsRealUser ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-17 21:03:45 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  err  :=  addOrUpdateTeamMember ( c . Req . Context ( ) ,  hs . teamPermissionsService ,  c . SignedInUser . UserId ,  c . OrgId ,  team . Id ,  models . PERMISSION_ADMIN . String ( ) ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-17 23:06:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												c . Logger . Error ( "Could not add creator to team" ,  "error" ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-08 16:27:47 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-17 23:06:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											c . Logger . Warn ( "Could not add creator to team because is not a real user" ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-08 18:56:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-06 18:47:18 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-15 20:01:58 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  response . JSON ( http . StatusOK ,  & util . DynMap { 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-17 23:06:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										"teamId" :   team . Id , 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-08 23:25:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										"message" :  "Team created" , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-27 21:54:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// swagger:route PUT /teams/{team_id} teams updateTeam
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Update Team.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Responses:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 200: okResponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 401: unauthorisedError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 403: forbiddenError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 404: notFoundError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 409: conflictError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 500: internalServerError
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-29 17:18:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  ( hs  * HTTPServer )  UpdateTeam ( c  * models . ReqContext )  response . Response  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									cmd  :=  models . UpdateTeamCommand { } 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-15 00:55:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									var  err  error 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-29 17:18:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  err  :=  web . Bind ( c . Req ,  & cmd ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  response . Error ( http . StatusBadRequest ,  "bad request data" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-10 00:26:15 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									cmd . OrgId  =  c . OrgId 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-15 00:55:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									cmd . Id ,  err  =  strconv . ParseInt ( web . Params ( c . Req ) [ ":teamId" ] ,  10 ,  64 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  response . Error ( http . StatusBadRequest ,  "teamId is invalid" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-11 18:26:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-25 16:42:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  hs . AccessControl . IsDisabled ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-27 23:16:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  err  :=  hs . teamGuardian . CanAdmin ( c . Req . Context ( ) ,  cmd . OrgId ,  cmd . Id ,  c . SignedInUser ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  response . Error ( 403 ,  "Not allowed to update team" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-11 18:26:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-24 18:52:35 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  err  :=  hs . SQLStore . UpdateTeam ( c . Req . Context ( ) ,  & cmd ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-19 20:34:28 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  errors . Is ( err ,  models . ErrTeamNameTaken )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  response . Error ( 400 ,  "Team name taken" ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-18 21:01:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  response . Error ( 500 ,  "Failed to update Team" ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-18 21:01:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  response . Success ( "Team updated" ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-18 21:01:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-27 21:54:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// swagger:route DELETE /teams/{team_id} teams deleteTeamByID
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Delete Team By ID.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Responses:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 200: okResponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 401: unauthorisedError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 403: forbiddenError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 404: notFoundError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 500: internalServerError
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  ( hs  * HTTPServer )  DeleteTeamByID ( c  * models . ReqContext )  response . Response  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-11 19:03:15 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									orgId  :=  c . OrgId 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-15 00:55:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									teamId ,  err  :=  strconv . ParseInt ( web . Params ( c . Req ) [ ":teamId" ] ,  10 ,  64 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  response . Error ( http . StatusBadRequest ,  "teamId is invalid" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-11 19:03:15 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									user  :=  c . SignedInUser 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-25 16:42:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  hs . AccessControl . IsDisabled ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-27 23:16:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  err  :=  hs . teamGuardian . CanAdmin ( c . Req . Context ( ) ,  orgId ,  teamId ,  user ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  response . Error ( 403 ,  "Not allowed to delete team" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-11 19:03:15 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-24 18:52:35 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  err  :=  hs . SQLStore . DeleteTeam ( c . Req . Context ( ) ,  & models . DeleteTeamCommand { OrgId :  orgId ,  Id :  teamId } ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-19 20:34:28 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  errors . Is ( err ,  models . ErrTeamNotFound )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  response . Error ( 404 ,  "Failed to delete Team. ID not found" ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  response . Error ( 500 ,  "Failed to delete Team" ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  response . Success ( "Team deleted" ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-27 21:54:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// swagger:route GET /teams/search teams searchTeams
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Team Search With Paging.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Responses:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 200: searchTeamsResponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 401: unauthorisedError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 403: forbiddenError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 500: internalServerError
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  ( hs  * HTTPServer )  SearchTeams ( c  * models . ReqContext )  response . Response  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									perPage  :=  c . QueryInt ( "perpage" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  perPage  <=  0  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										perPage  =  1000 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									page  :=  c . QueryInt ( "page" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  page  <  1  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										page  =  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-09 23:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									// Using accesscontrol the filtering is done based on user permissions
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									userIdFilter  :=  models . FilterIgnoreUser 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-25 16:42:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  hs . AccessControl . IsDisabled ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-16 01:09:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										userIdFilter  =  userFilter ( c ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-09 23:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-03-04 19:57:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									query  :=  models . SearchTeamsQuery { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-11 21:40:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										OrgId :         c . OrgId , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Query :         c . Query ( "query" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Name :          c . Query ( "name" ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-09 23:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										UserIdFilter :  userIdFilter , 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-11 21:40:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Page :          page , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Limit :         perPage , 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-24 19:10:32 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										SignedInUser :  c . SignedInUser , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										HiddenUsers :   hs . Cfg . HiddenUsers , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-24 18:52:35 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  err  :=  hs . SQLStore . SearchTeams ( c . Req . Context ( ) ,  & query ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  response . Error ( 500 ,  "Failed to search Teams" ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 00:49:39 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									teamIDs  :=  map [ string ] bool { } 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-21 04:20:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									for  _ ,  team  :=  range  query . Result . Teams  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										team . AvatarUrl  =  dtos . GetGravatarUrlWithDefault ( team . Email ,  team . Name ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 00:49:39 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										teamIDs [ strconv . FormatInt ( team . Id ,  10 ) ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-24 15:58:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									metadata  :=  hs . getMultiAccessControlMetadata ( c ,  c . OrgId ,  "teams:id:" ,  teamIDs ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-18 18:27:00 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  len ( metadata )  >  0  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 00:49:39 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										for  _ ,  team  :=  range  query . Result . Teams  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											team . AccessControl  =  metadata [ strconv . FormatInt ( team . Id ,  10 ) ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-21 04:20:12 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									query . Result . Page  =  page 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									query . Result . PerPage  =  perPage 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-15 20:01:58 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  response . JSON ( http . StatusOK ,  query . Result ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 07:24:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-18 21:01:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-09 20:44:38 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// UserFilter returns the user ID used in a filter when querying a team
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 1. If the user is a viewer or editor, this will return the user's ID.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-16 01:09:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// 2. If the user is an admin, this will return models.FilterIgnoreUser (0)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								func  userFilter ( c  * models . ReqContext )  int64  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-09 20:44:38 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									userIdFilter  :=  c . SignedInUser . UserId 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-10 17:56:48 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  c . OrgRole  ==  org . RoleAdmin  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-09 20:44:38 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										userIdFilter  =  models . FilterIgnoreUser 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  userIdFilter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-27 21:54:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// swagger:route GET /teams/{team_id} teams getTeamByID
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Get Team By ID.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Responses:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 200: getTeamByIDResponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 401: unauthorisedError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 403: forbiddenError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 404: notFoundError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 500: internalServerError
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  ( hs  * HTTPServer )  GetTeamByID ( c  * models . ReqContext )  response . Response  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-15 00:55:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									teamId ,  err  :=  strconv . ParseInt ( web . Params ( c . Req ) [ ":teamId" ] ,  10 ,  64 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  response . Error ( http . StatusBadRequest ,  "teamId is invalid" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-09 20:44:38 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-09 23:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									// Using accesscontrol the filtering has already been performed at middleware layer
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									userIdFilter  :=  models . FilterIgnoreUser 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-25 16:42:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  hs . AccessControl . IsDisabled ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-16 01:09:03 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										userIdFilter  =  userFilter ( c ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-09 23:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-24 19:10:32 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									query  :=  models . GetTeamByIdQuery { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										OrgId :         c . OrgId , 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-15 00:55:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Id :            teamId , 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-24 19:10:32 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										SignedInUser :  c . SignedInUser , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										HiddenUsers :   hs . Cfg . HiddenUsers , 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-09 23:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										UserIdFilter :  userIdFilter , 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-24 19:10:32 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-18 21:01:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-24 18:52:35 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  err  :=  hs . SQLStore . GetTeamById ( c . Req . Context ( ) ,  & query ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-19 20:34:28 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  errors . Is ( err ,  models . ErrTeamNotFound )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  response . Error ( 404 ,  "Team not found" ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-18 21:01:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  response . Error ( 500 ,  "Failed to get Team" ,  err ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-18 21:01:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-18 18:27:00 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									// Add accesscontrol metadata
 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-24 15:58:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									query . Result . AccessControl  =  hs . getAccessControlMetadata ( c ,  c . OrgId ,  "teams:id:" ,  strconv . FormatInt ( query . Result . Id ,  10 ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 00:49:39 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-12 02:23:07 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									query . Result . AvatarUrl  =  dtos . GetGravatarUrlWithDefault ( query . Result . Email ,  query . Result . Name ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-15 20:01:58 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  response . JSON ( http . StatusOK ,  & query . Result ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-18 21:01:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-13 03:01:53 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-27 21:54:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// swagger:route GET /teams/{team_id}/preferences teams getTeamPreferences
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Get Team Preferences.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Responses:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 200: getPreferencesResponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 401: unauthorisedError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 500: internalServerError
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-15 21:43:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  ( hs  * HTTPServer )  GetTeamPreferences ( c  * models . ReqContext )  response . Response  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-15 00:55:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									teamId ,  err  :=  strconv . ParseInt ( web . Params ( c . Req ) [ ":teamId" ] ,  10 ,  64 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  response . Error ( http . StatusBadRequest ,  "teamId is invalid" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 19:17:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 20:59:53 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									orgId  :=  c . OrgId 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-25 16:42:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  hs . AccessControl . IsDisabled ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 19:17:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  err  :=  hs . teamGuardian . CanAdmin ( c . Req . Context ( ) ,  orgId ,  teamId ,  c . SignedInUser ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  response . Error ( 403 ,  "Not allowed to view team preferences." ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 20:59:53 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-02 20:41:45 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  hs . getPreferencesFor ( c . Req . Context ( ) ,  orgId ,  0 ,  teamId ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-13 03:01:53 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-27 21:54:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// swagger:route PUT /teams/{team_id}/preferences teams updateTeamPreferences
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Update Team Preferences.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Responses:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 200: okResponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 400: badRequestError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 401: unauthorisedError
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 500: internalServerError
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-29 17:18:01 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  ( hs  * HTTPServer )  UpdateTeamPreferences ( c  * models . ReqContext )  response . Response  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									dtoCmd  :=  dtos . UpdatePrefsCmd { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  :=  web . Bind ( c . Req ,  & dtoCmd ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  response . Error ( http . StatusBadRequest ,  "bad request data" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 19:17:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-15 00:55:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									teamId ,  err  :=  strconv . ParseInt ( web . Params ( c . Req ) [ ":teamId" ] ,  10 ,  64 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  response . Error ( http . StatusBadRequest ,  "teamId is invalid" ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 19:17:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-03-11 20:14:06 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									orgId  :=  c . OrgId 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-25 16:42:09 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  hs . AccessControl . IsDisabled ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 19:17:54 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  err  :=  hs . teamGuardian . CanAdmin ( c . Req . Context ( ) ,  orgId ,  teamId ,  c . SignedInUser ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  response . Error ( 403 ,  "Not allowed to update team preferences." ,  err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-11 20:14:06 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-02 20:41:45 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  hs . updatePreferencesFor ( c . Req . Context ( ) ,  orgId ,  0 ,  teamId ,  & dtoCmd ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-13 03:01:53 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-27 21:54:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// swagger:parameters updateTeamPreferences
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								type  UpdateTeamPreferencesParams  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in:path
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// required:true
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									TeamID  string  ` json:"team_id" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in:body
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// required:true
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									Body  dtos . UpdatePrefsCmd  ` json:"body" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// swagger:parameters getTeamByID
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								type  GetTeamByIDParams  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in:path
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// required:true
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									TeamID  string  ` json:"team_id" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// swagger:parameters deleteTeamByID
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								type  DeleteTeamByIDParams  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in:path
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// required:true
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									TeamID  string  ` json:"team_id" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// swagger:parameters getTeamPreferences
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								type  GetTeamPreferencesParams  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in:path
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// required:true
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									TeamID  string  ` json:"team_id" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// swagger:parameters searchTeams
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								type  SearchTeamsParams  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in:query
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// required:false
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// default: 1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									Page  int  ` json:"page" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// Number of items per page
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// The totalCount field in the response can be used for pagination list E.g. if totalCount is equal to 100 teams and the perpage parameter is set to 10 then there are 10 pages of teams.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in:query
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// required:false
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// default: 1000
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									PerPage  int     ` json:"perpage" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									Name     string  ` json:"name" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// If set it will return results where the query value is contained in the name field. Query values with spaces need to be URL encoded.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// required:false
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									Query  string  ` json:"query" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// swagger:parameters createTeam
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								type  CreateTeamParams  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in:body
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// required:true
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									Body  models . CreateTeamCommand  ` json:"body" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// swagger:parameters updateTeam
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								type  UpdateTeamParams  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in:body
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// required:true
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									Body  models . UpdateTeamCommand  ` json:"body" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in:path
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// required:true
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									TeamID  string  ` json:"team_id" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// swagger:response searchTeamsResponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								type  SearchTeamsResponse  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// The response message
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in: body
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									Body  models . SearchTeamQueryResult  ` json:"body" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// swagger:response getTeamByIDResponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								type  GetTeamByIDResponse  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// The response message
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in: body
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									Body  * models . TeamDTO  ` json:"body" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// swagger:response createTeamResponse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								type  CreateTeamResponse  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// The response message
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// in: body
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									Body  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										TeamId   int64   ` json:"teamId" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Message  string  ` json:"message" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									}  ` json:"body" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}