@@ -18,7 +18,15 @@ const createProjectMemberValidations = {
1818 param : Joi . object ( )
1919 . keys ( {
2020 role : Joi . any ( )
21- . valid ( PROJECT_MEMBER_ROLE . MANAGER , PROJECT_MEMBER_ROLE . ACCOUNT_MANAGER , PROJECT_MEMBER_ROLE . COPILOT ) ,
21+ . valid (
22+ PROJECT_MEMBER_ROLE . MANAGER ,
23+ PROJECT_MEMBER_ROLE . ACCOUNT_MANAGER ,
24+ PROJECT_MEMBER_ROLE . COPILOT ,
25+ PROJECT_MEMBER_ROLE . PROJECT_MANAGER ,
26+ PROJECT_MEMBER_ROLE . PROGRAM_MANAGER ,
27+ PROJECT_MEMBER_ROLE . SOLUTION_ARCHITECT ,
28+ PROJECT_MEMBER_ROLE . ACCOUNT_EXECUTIVE ,
29+ ) ,
2230 } ) ,
2331 } ,
2432} ;
@@ -39,9 +47,49 @@ module.exports = [
3947 return next ( err ) ;
4048 }
4149
50+ if ( PROJECT_MEMBER_ROLE . SOLUTION_ARCHITECT === targetRole &&
51+ ! util . hasRoles ( req , [ USER_ROLE . SOLUTION_ARCHITECT ] ) ) {
52+ const err = new Error ( `Only solution architect is able to join as ${ targetRole } ` ) ;
53+ err . status = 401 ;
54+ return next ( err ) ;
55+ }
56+
57+ if ( PROJECT_MEMBER_ROLE . PROJECT_MANAGER === targetRole &&
58+ ! util . hasRoles ( req , [ USER_ROLE . PROJECT_MANAGER ] ) ) {
59+ const err = new Error ( `Only project manager is able to join as ${ targetRole } ` ) ;
60+ err . status = 401 ;
61+ return next ( err ) ;
62+ }
63+
64+ if ( PROJECT_MEMBER_ROLE . PROGRAM_MANAGER === targetRole &&
65+ ! util . hasRoles ( req , [ USER_ROLE . PROGRAM_MANAGER ] ) ) {
66+ const err = new Error ( `Only program manager is able to join as ${ targetRole } ` ) ;
67+ err . status = 401 ;
68+ return next ( err ) ;
69+ }
70+
71+ if ( PROJECT_MEMBER_ROLE . ACCOUNT_EXECUTIVE === targetRole &&
72+ ! util . hasRoles ( req , [ USER_ROLE . ACCOUNT_EXECUTIVE ] ) ) {
73+ const err = new Error ( `Only account executive is able to join as ${ targetRole } ` ) ;
74+ err . status = 401 ;
75+ return next ( err ) ;
76+ }
77+
4278 if ( PROJECT_MEMBER_ROLE . ACCOUNT_MANAGER === targetRole &&
43- ! util . hasRoles ( req , [ USER_ROLE . MANAGER , USER_ROLE . TOPCODER_ACCOUNT_MANAGER ] ) ) {
44- const err = new Error ( `Only manager or account manager is able to join as ${ targetRole } ` ) ;
79+ ! util . hasRoles ( req , [
80+ USER_ROLE . MANAGER ,
81+ USER_ROLE . TOPCODER_ACCOUNT_MANAGER ,
82+ USER_ROLE . BUSINESS_DEVELOPMENT_REPRESENTATIVE ,
83+ USER_ROLE . PRESALES ,
84+ USER_ROLE . ACCOUNT_EXECUTIVE ,
85+ USER_ROLE . PROGRAM_MANAGER ,
86+ USER_ROLE . SOLUTION_ARCHITECT ,
87+ USER_ROLE . PROJECT_MANAGER ,
88+ ] ) ) {
89+ const err = new Error (
90+ // eslint-disable-next-line max-len
91+ `Only manager, account manager, business development representative, account executive, program manager, project manager, solution architect, or presales are able to join as ${ targetRole } ` ,
92+ ) ;
4593 err . status = 401 ;
4694 return next ( err ) ;
4795 }
@@ -53,10 +101,22 @@ module.exports = [
53101 }
54102 } else if ( util . hasRoles ( req , [ USER_ROLE . MANAGER , USER_ROLE . CONNECT_ADMIN ] ) ) {
55103 targetRole = PROJECT_MEMBER_ROLE . MANAGER ;
56- } else if ( util . hasRoles ( req , [ USER_ROLE . TOPCODER_ACCOUNT_MANAGER ] ) ) {
104+ } else if ( util . hasRoles ( req , [
105+ USER_ROLE . TOPCODER_ACCOUNT_MANAGER ,
106+ USER_ROLE . BUSINESS_DEVELOPMENT_REPRESENTATIVE ,
107+ USER_ROLE . PRESALES ,
108+ ] ) ) {
57109 targetRole = PROJECT_MEMBER_ROLE . ACCOUNT_MANAGER ;
58110 } else if ( util . hasRoles ( req , [ USER_ROLE . COPILOT , USER_ROLE . CONNECT_ADMIN ] ) ) {
59111 targetRole = PROJECT_MEMBER_ROLE . COPILOT ;
112+ } else if ( util . hasRoles ( req , [ USER_ROLE . ACCOUNT_EXECUTIVE ] ) ) {
113+ targetRole = PROJECT_MEMBER_ROLE . ACCOUNT_EXECUTIVE ;
114+ } else if ( util . hasRoles ( req , [ USER_ROLE . PROGRAM_MANAGER ] ) ) {
115+ targetRole = PROJECT_MEMBER_ROLE . PROGRAM_MANAGER ;
116+ } else if ( util . hasRoles ( req , [ USER_ROLE . SOLUTION_ARCHITECT ] ) ) {
117+ targetRole = PROJECT_MEMBER_ROLE . SOLUTION_ARCHITECT ;
118+ } else if ( util . hasRoles ( req , [ USER_ROLE . PROJECT_MANAGER ] ) ) {
119+ targetRole = PROJECT_MEMBER_ROLE . PROJECT_MANAGER ;
60120 } else {
61121 const err = new Error ( 'Only copilot or manager is able to call this endpoint' ) ;
62122 err . status = 401 ;
0 commit comments