Skip to content

Commit b52a673

Browse files
committed
fix: some permissions
- manage project plan - view draft phases - edit project status - view Direct / Salesforce links
1 parent 1695020 commit b52a673

File tree

3 files changed

+48
-10
lines changed

3 files changed

+48
-10
lines changed

docs/permissions.html

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,13 @@ <h2 class="anchor-container">
8787
</div>
8888
<div class="col-9 py-2">
8989
<div>
90-
<span class="badge badge-primary" title="Allowed Project Role">copilot,manager,account_manager,account_executive,project_manager,program_manager,solution_architect</span>
90+
<span class="badge badge-primary" title="Allowed Project Role">copilot</span>
91+
<span class="badge badge-primary" title="Allowed Project Role">manager</span>
92+
<span class="badge badge-primary" title="Allowed Project Role">account_manager</span>
93+
<span class="badge badge-primary" title="Allowed Project Role">account_executive</span>
94+
<span class="badge badge-primary" title="Allowed Project Role">project_manager</span>
95+
<span class="badge badge-primary" title="Allowed Project Role">program_manager</span>
96+
<span class="badge badge-primary" title="Allowed Project Role">solution_architect</span>
9197
</div>
9298

9399
<div>
@@ -159,7 +165,13 @@ <h2 class="anchor-container">
159165
</div>
160166
<div class="col-9 py-2">
161167
<div>
162-
<span class="badge badge-primary" title="Allowed Project Role">copilot,manager,account_manager,account_executive,project_manager,program_manager,solution_architect</span>
168+
<span class="badge badge-primary" title="Allowed Project Role">copilot</span>
169+
<span class="badge badge-primary" title="Allowed Project Role">manager</span>
170+
<span class="badge badge-primary" title="Allowed Project Role">account_manager</span>
171+
<span class="badge badge-primary" title="Allowed Project Role">account_executive</span>
172+
<span class="badge badge-primary" title="Allowed Project Role">project_manager</span>
173+
<span class="badge badge-primary" title="Allowed Project Role">program_manager</span>
174+
<span class="badge badge-primary" title="Allowed Project Role">solution_architect</span>
163175
</div>
164176

165177
<div>
@@ -382,7 +394,13 @@ <h2 class="anchor-container">
382394
</div>
383395
<div class="col-9 py-2">
384396
<div>
385-
<span class="badge badge-primary" title="Allowed Project Role">copilot,manager,account_manager,account_executive,project_manager,program_manager,solution_architect</span>
397+
<span class="badge badge-primary" title="Allowed Project Role">copilot</span>
398+
<span class="badge badge-primary" title="Allowed Project Role">manager</span>
399+
<span class="badge badge-primary" title="Allowed Project Role">account_manager</span>
400+
<span class="badge badge-primary" title="Allowed Project Role">account_executive</span>
401+
<span class="badge badge-primary" title="Allowed Project Role">project_manager</span>
402+
<span class="badge badge-primary" title="Allowed Project Role">program_manager</span>
403+
<span class="badge badge-primary" title="Allowed Project Role">solution_architect</span>
386404
</div>
387405

388406
<div>
@@ -938,7 +956,13 @@ <h2 class="anchor-container">
938956
</div>
939957
<div class="col-9 py-2">
940958
<div>
941-
<span class="badge badge-primary" title="Allowed Project Role">copilot,manager,account_manager,account_executive,project_manager,program_manager,solution_architect</span>
959+
<span class="badge badge-primary" title="Allowed Project Role">copilot</span>
960+
<span class="badge badge-primary" title="Allowed Project Role">manager</span>
961+
<span class="badge badge-primary" title="Allowed Project Role">account_manager</span>
962+
<span class="badge badge-primary" title="Allowed Project Role">account_executive</span>
963+
<span class="badge badge-primary" title="Allowed Project Role">project_manager</span>
964+
<span class="badge badge-primary" title="Allowed Project Role">program_manager</span>
965+
<span class="badge badge-primary" title="Allowed Project Role">solution_architect</span>
942966
</div>
943967

944968
<div>
@@ -957,7 +981,13 @@ <h2 class="anchor-container">
957981
</div>
958982
<div class="col-9 py-2">
959983
<div>
960-
<span class="badge badge-primary" title="Allowed Project Role">copilot,manager,account_manager,account_executive,project_manager,program_manager,solution_architect</span>
984+
<span class="badge badge-primary" title="Allowed Project Role">copilot</span>
985+
<span class="badge badge-primary" title="Allowed Project Role">manager</span>
986+
<span class="badge badge-primary" title="Allowed Project Role">account_manager</span>
987+
<span class="badge badge-primary" title="Allowed Project Role">account_executive</span>
988+
<span class="badge badge-primary" title="Allowed Project Role">project_manager</span>
989+
<span class="badge badge-primary" title="Allowed Project Role">program_manager</span>
990+
<span class="badge badge-primary" title="Allowed Project Role">solution_architect</span>
961991
</div>
962992

963993
<div>

src/config/permissions.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ export const PERMISSIONS = {
148148
description: 'Create, edit and delete phases and milestones.',
149149
},
150150
projectRoles: [
151-
_.difference(PROJECT_ALL, [PROJECT_ROLE_CUSTOMER])
151+
..._.difference(PROJECT_ALL, [PROJECT_ROLE_CUSTOMER])
152152
],
153153
topcoderRoles: [
154154
...TOPCODER_ADMINS,
@@ -191,7 +191,7 @@ export const PERMISSIONS = {
191191
title: 'View draft phases',
192192
},
193193
projectRoles: [
194-
_.difference(PROJECT_ALL, [PROJECT_ROLE_CUSTOMER])
194+
..._.difference(PROJECT_ALL, [PROJECT_ROLE_CUSTOMER])
195195
],
196196
topcoderRoles: [
197197
ROLE_CONNECT_MANAGER,
@@ -598,7 +598,7 @@ export const PERMISSIONS = {
598598
title: 'Edit project status',
599599
},
600600
projectRoles: [
601-
_.difference(PROJECT_ALL, [PROJECT_ROLE_CUSTOMER])
601+
..._.difference(PROJECT_ALL, [PROJECT_ROLE_CUSTOMER])
602602
],
603603
topcoderRoles: [
604604
...TOPCODER_ADMINS,
@@ -612,7 +612,7 @@ export const PERMISSIONS = {
612612
description: 'Direct / Salesforce links'
613613
},
614614
projectRoles: [
615-
_.difference(PROJECT_ALL, [PROJECT_ROLE_CUSTOMER])
615+
..._.difference(PROJECT_ALL, [PROJECT_ROLE_CUSTOMER])
616616
],
617617
topcoderRoles: [
618618
ROLE_CONNECT_MANAGER,

src/helpers/permissions.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ export const hasPermission = (permission, entities = {}) => {
6363
const deny = matchPermissionRule(denyRule, user, project)
6464

6565
// uncomment for debugging
66-
// console.warn('hasPermission', permission, project, allow && !deny)
66+
// if (permission === PERMISSIONS.VIEW_DRAFT_PHASES) {
67+
// console.warn('hasPermission', permission, project, user, allow && !deny)
68+
// }
6769

6870
return allow && !deny
6971
}
@@ -106,6 +108,9 @@ const matchPermissionRule = (permissionRule, user, project) => {
106108
&& project
107109
&& project.members
108110
) {
111+
if (_.some(permissionRule.projectRoles, (rule) => _.isArray(rule))) {
112+
throw new Error('Role cannot be an array. Make sure, that "projectRoles" doesn\'t have nested arrays: ' + JSON.stringify(permissionRule.projectRoles))
113+
}
109114
const userId = !_.isNumber(user.userId) ? parseInt(user.userId, 10) : user.userId
110115
const member = _.find(project.members, { userId })
111116

@@ -128,6 +133,9 @@ const matchPermissionRule = (permissionRule, user, project) => {
128133

129134
// check Topcoder Roles
130135
if (permissionRule.topcoderRoles) {
136+
if (_.some(permissionRule.topcoderRoles, (rule) => _.isArray(rule))) {
137+
throw new Error('Role cannot be an array. Make sure, that "topcoderRoles" doesn\'t have nested arrays: ' + JSON.stringify(permissionRule.topcoderRoles))
138+
}
131139
if (permissionRule.topcoderRoles.length > 0) {
132140
hasTopcoderRole = _.intersection(
133141
_.get(user, 'roles', []).map(role => role.toLowerCase()),

0 commit comments

Comments
 (0)