@@ -2,7 +2,7 @@ import _ from 'lodash';
22
33import models from '../../models' ;
44import util from '../../util' ;
5- import DEFAULT_PAGE_SIZE from '../../constants' ;
5+ import DEFAULT_PAGE_SIZE , { USER_ROLE } from '../../constants' ;
66
77module . exports = [
88 ( req , res , next ) => {
@@ -15,6 +15,7 @@ module.exports = [
1515 return util . handleError ( 'Invalid sort criteria' , null , req , next ) ;
1616 }
1717 const sortParams = sort . split ( ' ' ) ;
18+ const isAdminOrManager = util . hasRoles ( req , [ USER_ROLE . CONNECT_ADMIN , USER_ROLE . TOPCODER_ADMIN , USER_ROLE . PROJECT_MANAGER ] ) ;
1819
1920 // Extract pagination parameters
2021 const page = parseInt ( req . query . page , 10 ) || 1 ;
@@ -42,7 +43,7 @@ module.exports = [
4243 baseOrder . push ( [ sortParams [ 0 ] , sortParams [ 1 ] ] ) ;
4344
4445 return models . CopilotOpportunity . findAll ( {
45- include : [
46+ include : isAdminOrManager ? [
4647 {
4748 model : models . CopilotRequest ,
4849 as : 'copilotRequest' ,
@@ -52,6 +53,11 @@ module.exports = [
5253 as : 'project' ,
5354 attributes : [ 'name' ] ,
5455 } ,
56+ ] : [
57+ {
58+ model : models . CopilotRequest ,
59+ as : 'copilotRequest' ,
60+ } ,
5561 ] ,
5662 order : baseOrder ,
5763 limit,
@@ -60,10 +66,17 @@ module.exports = [
6066 . then ( ( copilotOpportunities ) => {
6167 const formattedOpportunities = copilotOpportunities . map ( ( opportunity ) => {
6268 const plainOpportunity = opportunity . get ( { plain : true } ) ;
63- return Object . assign ( { } , plainOpportunity ,
69+ const formatted = Object . assign ( { } , plainOpportunity ,
6470 plainOpportunity . copilotRequest ? plainOpportunity . copilotRequest . data : { } ,
6571 { copilotRequest : undefined } ,
6672 ) ;
73+
74+ // For users who are not admin or manager, we dont want to expose
75+ // the project id
76+ if ( ! isAdminOrManager ) {
77+ delete formatted . projectId ;
78+ }
79+ return ;
6780 } ) ;
6881 return util . setPaginationHeaders ( req , res , {
6982 count : copilotOpportunities . count ,
0 commit comments