diff --git a/app/javascript/dashboard/constants/permissions.js b/app/javascript/dashboard/constants/permissions.js index 1ecbd9793..185c6ebdd 100644 --- a/app/javascript/dashboard/constants/permissions.js +++ b/app/javascript/dashboard/constants/permissions.js @@ -1,20 +1,3 @@ -export const AVAILABLE_CUSTOM_ROLE_PERMISSIONS = [ - 'conversation_manage', - 'conversation_unassigned_manage', - 'conversation_participating_manage', - 'contact_manage', - 'report_manage', - 'knowledge_base_manage', -]; - -export const ROLES = ['agent', 'administrator']; - -export const CONVERSATION_PERMISSIONS = [ - 'conversation_manage', - 'conversation_unassigned_manage', - 'conversation_participating_manage', -]; - export const MANAGE_ALL_CONVERSATION_PERMISSIONS = 'conversation_manage'; export const CONVERSATION_UNASSIGNED_PERMISSIONS = @@ -29,6 +12,27 @@ export const REPORTS_PERMISSIONS = 'report_manage'; export const PORTAL_PERMISSIONS = 'knowledge_base_manage'; +export const BILLING_PERMISSIONS = 'billing_manage'; + +export const AVAILABLE_CUSTOM_ROLE_PERMISSIONS = [ + MANAGE_ALL_CONVERSATION_PERMISSIONS, + CONVERSATION_UNASSIGNED_PERMISSIONS, + CONVERSATION_PARTICIPATING_PERMISSIONS, + CONTACT_PERMISSIONS, + REPORTS_PERMISSIONS, + PORTAL_PERMISSIONS, +]; + +export const CHATWOOT_CLOUD_ONLY_CUSTOM_ROLES = [BILLING_PERMISSIONS]; + +export const ROLES = ['agent', 'administrator']; + +export const CONVERSATION_PERMISSIONS = [ + MANAGE_ALL_CONVERSATION_PERMISSIONS, + CONVERSATION_UNASSIGNED_PERMISSIONS, + CONVERSATION_PARTICIPATING_PERMISSIONS, +]; + export const ASSIGNEE_TYPE_TAB_PERMISSIONS = { me: { count: 'mineCount', diff --git a/app/javascript/dashboard/helper/routeHelpers.js b/app/javascript/dashboard/helper/routeHelpers.js index 292e5e6e1..865d679ce 100644 --- a/app/javascript/dashboard/helper/routeHelpers.js +++ b/app/javascript/dashboard/helper/routeHelpers.js @@ -10,6 +10,7 @@ import { CONTACT_PERMISSIONS, REPORTS_PERMISSIONS, PORTAL_PERMISSIONS, + BILLING_PERMISSIONS, } from 'dashboard/constants/permissions.js'; export const routeIsAccessibleFor = (route, userPermissions = []) => { @@ -28,6 +29,7 @@ export const defaultRedirectPage = (to, permissions) => { { permissions: [CONTACT_PERMISSIONS], path: 'contacts' }, { permissions: [REPORTS_PERMISSIONS], path: 'reports/overview' }, { permissions: [PORTAL_PERMISSIONS], path: 'portals' }, + { permissions: [BILLING_PERMISSIONS], path: 'settings/billing' }, ]; const route = permissionRoutes.find(({ permissions: routePermissions }) => diff --git a/app/javascript/dashboard/i18n/locale/en/customRole.json b/app/javascript/dashboard/i18n/locale/en/customRole.json index b7b48b5e7..4cf0a043b 100644 --- a/app/javascript/dashboard/i18n/locale/en/customRole.json +++ b/app/javascript/dashboard/i18n/locale/en/customRole.json @@ -35,7 +35,8 @@ "CONVERSATION_PARTICIPATING_MANAGE": "Manage participating conversations and those assigned to them", "CONTACT_MANAGE": "Manage contacts", "REPORT_MANAGE": "Manage reports", - "KNOWLEDGE_BASE_MANAGE": "Manage knowledge base" + "KNOWLEDGE_BASE_MANAGE": "Manage knowledge base", + "BILLING_MANAGE": "Manage billing" }, "FORM": { "NAME": { diff --git a/app/javascript/dashboard/routes/dashboard/settings/billing/billing.routes.js b/app/javascript/dashboard/routes/dashboard/settings/billing/billing.routes.js index 8c03257c8..4e98184b9 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/billing/billing.routes.js +++ b/app/javascript/dashboard/routes/dashboard/settings/billing/billing.routes.js @@ -8,7 +8,7 @@ export default { { path: frontendURL('accounts/:accountId/settings/billing'), meta: { - permissions: ['administrator'], + permissions: ['billing_manage', 'administrator'], installationTypes: [INSTALLATION_TYPES.CLOUD], }, component: SettingsWrapper, @@ -24,7 +24,7 @@ export default { component: Index, meta: { installationTypes: [INSTALLATION_TYPES.CLOUD], - permissions: ['administrator'], + permissions: ['billing_manage', 'administrator'], }, }, ], diff --git a/app/javascript/dashboard/routes/dashboard/settings/customRoles/component/CustomRoleModal.vue b/app/javascript/dashboard/routes/dashboard/settings/customRoles/component/CustomRoleModal.vue index cddbddd32..fd1d73bf9 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/customRoles/component/CustomRoleModal.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/customRoles/component/CustomRoleModal.vue @@ -1,12 +1,13 @@