diff --git a/.circleci/config.yml b/.circleci/config.yml
index f4215a9be..0c5bd0d44 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -138,7 +138,7 @@ workflows:
- build-dev
filters:
branches:
- only: ['feature/faqs', 'feature/project_september']
+ only: ['feature/unified-permissions']
- deployProd:
context : org-global
diff --git a/docs/permissions-guide/permissions-guide.md b/docs/permissions-guide/permissions-guide.md
index cb4134694..b6d53a136 100644
--- a/docs/permissions-guide/permissions-guide.md
+++ b/docs/permissions-guide/permissions-guide.md
@@ -18,12 +18,12 @@ Let's say you would like to add a new place in code where you want to check user
2. After you add a new permission, regenerate [permissions list](https://htmlpreview.github.io/?https://github.com/appirio-tech/connect-app/blob/dev/docs/permissions.html) by running `npm run generate:doc:permissions`.
-3. To check if user has permission in code use method `hasPermission(permission)`.
+3. To check if logged-in user has permission in code use method `hasPermission(permission)`.
Example:
-
+
```js
- import PERMISSIONS from 'config/permissions'
+ import { PERMISSIONS } from 'config/permissions'
import { hasPermission } from 'helpers/permissions'
if (hasPermission(PERMISSIONS.MANAGE_PROJECT_PLAN)) {
@@ -31,7 +31,10 @@ Let's say you would like to add a new place in code where you want to check user
}
```
- - Note, optionally, you may pass the `project` object like this `hasPermission(permission, project)`. But you don't have to as `hasPermission` gets `project` object from the Redux Store (`projectState.project`) automatically. Only in case if you want to check user permission to another project which is not loaded into the Redux Store then you may pass `project` explicitly.
+4. If you would like to check permissions for other user (not the current user) or for other project (not the current project) you may pass the second argument `entities: { project?: object, user?: object }`:
+ - `hasPermission(permission, { project })` - check permissions for another project
+ - `hasPermission(permission, { user })` - check permissions for another user
+ - `hasPermission(permission, { project, user })` - check permissions for another project and user
## Roles
@@ -49,4 +52,4 @@ By default every user has one role `Topcoder User`, generally this means that su
When user joins some project and become a member of the project, such a user has one **Project Role** inside that project. One user may have different **Project Role** in different projects. See [the list of all Project Roles](https://github.com/appirio-tech/connect-app/blob/dev/src/config/constants.js#L638-L647) which we use in Connect App.
-
\ No newline at end of file
+
diff --git a/docs/permissions.html b/docs/permissions.html
index 65e337cbd..44dfaff34 100644
--- a/docs/permissions.html
+++ b/docs/permissions.html
@@ -6,10 +6,53 @@
Permissions
@@ -21,421 +64,1135 @@ Permissions
Legend:
allowed Project Role - users with such a Project Role are allowed to perform the action
- denied Project Role - users with such a Project Role are denied to perform the action even they have some other allow roles
+ denied Project Role - users with such a Project Role are denied to perform the action even they have some other allow roles
allowed Topcoder Role - users with such a Topcoder Role are allowed to perform the action
- denied Topcoder Role - users with such a Topcoder Role are denied to perform the action even they have some other allow roles
+ denied Topcoder Role - users with such a Topcoder Role are denied to perform the action even they have some other allow roles
-
Project Plan
+
+ Project Plan
+
- Manage project plan
-
MANAGE_PROJECT_PLAN
+
+
MANAGE_PROJECT_PLAN
Create, edit and delete phases and milestones.
-
manager
-
project_manager
-
program_manager
-
solution_architect
-
copilot
-
administrator
-
Connect Admin
+
+ copilot
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
+
+
+
+
+
+
Manage asset libraries files and links (not own)
+
+
MANAGE_NOT_OWN_ATTACHEMENT
+
+
+
+
+
+
+
+ administrator
+ Connect Admin
+
+
+
+
+
+
+
Manage completed phases
+
+
MANAGE_COMPLETED_PHASE
+
+
+
+
+
+
+
+ administrator
+ Connect Admin
+
- Manage asset libraries files and links
-
MANAGE_NOT_OWN_ATTACHEMENT
+
+
Expand active phases by default
+
+
EXPAND_ACTIVE_PHASES_BY_DEFAULT
-
administrator
-
Connect Admin
+
+ customer
+
+
+
+
- Manage completed phases
-
MANAGE_COMPLETED_PHASE
+
+
VIEW_DRAFT_PHASES
-
administrator
-
Connect Admin
+
+ copilot
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ Connect Manager
+ administrator
+ Connect Admin
+
-
Project Members
+
+ Project Members
+
- Manage topcoder team
-
MANAGE_TOPCODER_TEAM
-
Invite new members or delete them. There are some additional restrictions for some roles.
+
+
MANAGE_CUSTOMER_TEAM
+
Invite or cancel invitations and remove members in the Customer Team.
+
+
+
+ customer
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
+
+
+
+
+
+
MANAGE_COPILOTS
+
Directly invite copilots to the project.
+
+
+
+
+
+
+ administrator
+ Connect Admin
+ Connect Copilot Manager
+
+
+
+
+
+
+
MANAGE_TOPCODER_TEAM
+
Invite or cancel invitations and remove members in the Topcoder Team.
-
manager
-
account_manager
-
account_executive
-
project_manager
-
program_manager
-
solution_architect
-
administrator
-
Connect Admin
+
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
- Join topcoder team
-
JOIN_TOPCODER_TEAM
+
+
JOIN_TOPCODER_TEAM
Join Topcoder Team without invitation
-
administrator
-
Connect Admin
-
Connect Manager
+
+
+
+
+ administrator
+ Connect Admin
+ Connect Manager
+
- Manage copilots
-
MANAGE_COPILOTS
-
Directly invite copilots to the project.
+
+
Be listed in Customer Team
+
+
BE_LISTED_IN_CUSTOMER_TEAM
+
Who should be listed in Customer Team.
-
administrator
-
Connect Admin
-
Connect Copilot Manager
+
+ customer
+
+
+
+
- Request copilots
-
REQUEST_COPILOTS
+
+
Be listed in Copilot Team
+
+
BE_LISTED_IN_COPILOT_TEAM
+
Who should be listed in Copilot Team.
+
+
+
+
+
+
+
Be listed in Topcoder Team
+
+
BE_LISTED_IN_TOPCODER_TEAM
+
Who should be listed in Topcoder Team.
+
+
+
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+
+
+
+
+
+
+
REQUEST_COPILOTS
Request copilots to the project.
-
manager
-
account_manager
-
account_executive
-
project_manager
-
program_manager
-
solution_architect
-
administrator
-
Connect Admin
-
Connect Copilot Manager
+
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+ Connect Copilot Manager
+
+
+
+
+
+
+
See Member Suggestions
+
+
SEE_MEMBER_SUGGESTIONS
+
When entering user handle in the invite field.
+
+
+
+
+
+
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Account Manager
+ Connect Copilot Manager
+
-
Topics & Posts
+
+ Topics & Posts
+
- Access private posts
-
ACCESS_PRIVATE_POST
+
+
ACCESS_PRIVATE_POST
-
copilot
-
administrator
-
Connect Admin
-
Connect Manager
-
Program Manager
-
Solution Architect
-
Project Manager
+
+ copilot
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
+
+
+
+
+
+
CREATE_TOPICS
+
Create threads (supported only for old messages tab at the moment)
+
+
+
+
+
+
+ Topcoder User
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+ Connect Copilot
+
+
+
+
+
+
+
CREATE_POSTS
+
Comment/post in already created threads/topics
+
+
+
+
+
+
+ Topcoder User
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+ Connect Copilot
+
-
Budget & Invoice Reports
+
+ Budget & Invoice Reports
+
- Access budget report
-
ACCESS_BUDGET_REPORT
+
+
ACCESS_BUDGET_REPORT
-
customer
-
manager
-
account_manager
-
account_executive
-
project_manager
-
program_manager
-
solution_architect
-
administrator
-
Connect Admin
+
+ customer
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
- Access budget spent report
-
ACCESS_BUDGET_SPENT_REPORT
+
+
Access budget spent report
+
+
ACCESS_BUDGET_SPENT_REPORT
-
manager
-
account_manager
-
account_executive
-
project_manager
-
program_manager
-
solution_architect
-
administrator
-
Connect Admin
+
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
- Access invoice report
-
ACCESS_INVOICE_REPORT
+
+
Access invoice report
+
+
ACCESS_INVOICE_REPORT
-
customer
-
manager
-
account_manager
-
account_executive
-
project_manager
-
program_manager
-
solution_architect
-
administrator
-
Connect Admin
+
+ customer
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
-
User Profile
+
+ User Settings
+
- Update phone number in user profile
-
UPDATE_USER_PROFILE_PHONE
+
+
Update phone number in user profile
+
+
UPDATE_USER_PROFILE_PHONE
-
Topcoder User
-
administrator
-
Connect Admin
-
Connect Manager
-
Connect Copilot Manager
-
Connect Account Manager
-
Business Development Representative
-
Presales
-
Account Executive
-
Program Manager
-
Solution Architect
-
Project Manager
-
Connect Copilot
+
+
+
+
+ Topcoder User
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Copilot Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+ Connect Copilot
+
- Update company name in user profile
-
UPDATE_USER_PROFILE_COMPANY
+
+
Update company name in user profile
+
+
UPDATE_USER_PROFILE_COMPANY
-
administrator
-
Connect Admin
-
Connect Manager
-
Connect Copilot Manager
-
Connect Account Manager
-
Business Development Representative
-
Presales
-
Account Executive
-
Program Manager
-
Solution Architect
-
Project Manager
+
+
+
+
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Copilot Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+
- View User Profile as Copilot
-
VIEW_USER_PROFILE_AS_COPILOT
+
+
View User Profile as Copilot
+
+
VIEW_USER_PROFILE_AS_COPILOT
-
Connect Copilot
+
+
+
+
+ Connect Copilot
+
- View User Profile as Topcoder Employee
-
VIEW_USER_PROFILE_AS_TOPCODER_EMPLOYEE
+
+
View User Profile as Topcoder Employee
+
+
VIEW_USER_PROFILE_AS_TOPCODER_EMPLOYEE
-
administrator
-
Connect Admin
-
Connect Manager
-
Connect Copilot Manager
-
Connect Account Manager
-
Business Development Representative
-
Presales
-
Account Executive
-
Program Manager
-
Solution Architect
-
Project Manager
+
+
+
+
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Copilot Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+
- View User Profile as Customer
-
VIEW_USER_PROFILE_AS_CUSTOMER
+
+
View User Profile as Customer
+
+
VIEW_USER_PROFILE_AS_CUSTOMER
-
Topcoder User
-
administrator
-
Connect Admin
-
Connect Manager
-
Connect Copilot Manager
-
Connect Account Manager
-
Business Development Representative
-
Presales
-
Account Executive
-
Program Manager
-
Solution Architect
-
Project Manager
-
Connect Copilot
+
+
+
+
+ Topcoder User
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Copilot Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+ Connect Copilot
+
+
+
+
+
+
+
UPDATE_USER_EMAIL
+
+
+
+
+
+
+
+ Topcoder User
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Copilot Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+ Connect Copilot
+
+
+
+
+
+
+
Enable/disable website notifications.
+
+
TOGGLE_WEBSITE_NOTIFICATIONS
+
+
+
+
+
+
+
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Copilot Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+ Connect Copilot
+
-
View Member Suggestions
+
+ Project List
+
- Member Suggestions
-
SEE_MEMBER_SUGGESTIONS
+
+
See My Projects Filter
+
+
SEE_MY_PROJECTS_FILTER
+
+
+
+
+
+
+
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Copilot Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+
+
+
+
+
+
+
+
+
+
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Copilot Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+ Connect Copilot
+
+
+
+
+
-
administrator
-
Connect Admin
-
Connect Manager
-
Connect Account Manager
-
Connect Copilot Manager
+
+
+
+
+ Topcoder User
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Copilot Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+ Connect Copilot
+
+
+
+
+
+
+
Have Grid View by default
+
+
SEE_GRID_VIEW_BY_DEFAULT
+
+
+
+
+
+
+
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Copilot Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+ Connect Copilot
+
+
+
+
+
+
+
Retry project loading
+
+
RETRY_PROJECTS_LOADING
+
+
+
+
+
+
+
+ Topcoder User
+ administrator
+ Connect Admin
+ Connect Manager
+ Connect Copilot Manager
+ Connect Account Manager
+ Business Development Representative
+ Presales
+ Account Executive
+ Program Manager
+ Solution Architect
+ Project Manager
+ Connect Copilot
+
-
My Projects Filter
+
+ Project Details
+
- My Projects Filter
-
SEE_MY_PROJECTS_FILTER
+
+
Edit project specification
+
+
EDIT_PROJECT_SPECIFICATION
+
+
+
+
+ customer
+ copilot
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
+
+
+
+
+
+
Manage project assets
+
+
MANAGE_PROJECT_ASSETS
+
+
+
+
+ customer
+ copilot
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
+
+
+
+
+
+
EDIT_PROJECT_STATUS
+
+
+
+
+ copilot
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
+
+
+
+
+
+
View project special links
+
+
VIEW_PROJECT_SPECIAL_LINKS
+
Direct / Salesforce links
+
+
+
+ copilot
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ Connect Manager
+ administrator
+ Connect Admin
+
+
+
+
+
+
+
Submit project for review
+
+
SUBMIT_PROJECT_FOR_REVIEW
-
administrator
-
Connect Admin
-
Connect Manager
-
Connect Copilot Manager
-
Connect Account Manager
-
Business Development Representative
-
Presales
-
Account Executive
-
Program Manager
-
Solution Architect
-
Project Manager
+
+ customer
+
+
+
+
+
+
+
+
+
+
DELETE_DRAFT_PROJECT
+
+
+
-
DEMO/TEST example permissions
+
+ Scope Change Requests
+
- Topcoder role deny
-
TEST_1
-
This permission is just to demonstrate possible format
+
+
Approve & Reject Scope Change Requests
+
+
APPROVE_REJECT_SCOPE_REQUESTS
+
-
Connect Copilot
-
Topcoder User
-
Account Executive
+
+ customer
+
+
+
+ administrator
+ Connect Admin
+
- Topcoder role and Project role deny
-
TEST_2
-
This permission is just to demonstrate possible format
+
+
Activate Scope Change Requests
+
+
ACTIVATE_SCOPE_REQUESTS
+
-
copilot
-
customer
-
manager
-
Connect Copilot
-
Topcoder User
-
Account Executive
+
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
- Any Project Member
-
TEST_3
-
This permission is just to demonstrate possible format
+
+
Cancel Scope Change Requests (not own)
+
+
CANCEL_SCOPE_REQUESTS_NOT_OWN
+
Everyone can cancel their own scope change requests.
-
customer
-
copilot
-
manager
-
account_manager
-
account_executive
-
project_manager
-
program_manager
-
solution_architect
+
+
+
+
+ administrator
+ Connect Admin
+
+
+
+
+
+
+
+
MANAGE_MILESTONE
+
Who can manage milestone and complete them.
+
+
+
+ copilot
+ manager
+ account_manager
+ account_executive
+ project_manager
+ program_manager
+ solution_architect
+
+
+
+ administrator
+ Connect Admin
+
- Any Logged-in User
-
TEST_5
-
This permission is just to demonstrate possible format
+
+
Accept final delivery
+
+
ACCEPT_MILESTONE_FINAL_DELIVERY
+
-
Topcoder User
-
administrator
-
Connect Admin
-
Connect Manager
-
Connect Account Manager
-
Business Development Representative
-
Presales
-
Account Executive
-
Program Manager
-
Solution Architect
-
Project Manager
-
Connect Copilot
+
+ customer
+
+
+
+ administrator
+ Connect Admin
+
- Owner Project role
-
TEST_4
-
This permission is just to demonstrate possible format
+
+
Edit "Actual Start" and "Completion" dates.
+
+
EDIT_MILESTONE_ACTUAL_START_COMPLETION_DATES
+
-
owner
+
+
+
+
+ administrator
+ Connect Admin
+
+
+
+
+
+
+
+
+
+
+
+ administrator
+ Connect Admin
+
-