@routebot/constants 0.3.12 → 0.3.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
1
  const { USAGE_TYPES } = require("./usage.constants");
2
+ const { PERMISSION_TYPES } = require("./permission.constants");
2
3
 
3
4
  const COMPANY_DOMAINS = {
4
5
  STUDENT: "STUDENT",
@@ -6,10 +7,13 @@ const COMPANY_DOMAINS = {
6
7
  };
7
8
 
8
9
  const COMPANY_FEATURES = {
9
- SMS_COMMUNICATION: "smsCommunication",
10
- PHONE_APP: "phoneApp",
11
10
  ACCOUNTING: "accounting",
12
11
  INVENTORY: "inventory",
12
+ PHONE_APP: "phoneApp",
13
+ SERVICE_REPORTS: "serviceReports",
14
+ SHIFT_MANAGEMENT: "shiftManagement",
15
+ SMS_COMMUNICATION: "smsCommunication",
16
+ TRANSFERS: "transfers",
13
17
  WEBSITE_NOTIFICATIONS: "websiteNotifications",
14
18
  };
15
19
 
@@ -56,46 +60,83 @@ const PLAN_QUOTAS = {
56
60
 
57
61
  const PLAN_FEATURES = {
58
62
  [PLANS.DEMO]: {
59
- [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
60
- [COMPANY_FEATURES.PHONE_APP]: false,
61
63
  [COMPANY_FEATURES.ACCOUNTING]: false,
62
64
  [COMPANY_FEATURES.INVENTORY]: false,
65
+ [COMPANY_FEATURES.PHONE_APP]: false,
66
+ [COMPANY_FEATURES.SERVICE_REPORTS]: false,
67
+ [COMPANY_FEATURES.SHIFT_MANAGEMENT]: false,
68
+ [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
69
+ [COMPANY_FEATURES.TRANSFERS]: false,
63
70
  [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: false,
64
71
  },
72
+
65
73
  [PLANS.FREE]: {
66
- [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
67
- [COMPANY_FEATURES.PHONE_APP]: false,
68
74
  [COMPANY_FEATURES.ACCOUNTING]: false,
69
75
  [COMPANY_FEATURES.INVENTORY]: false,
76
+ [COMPANY_FEATURES.PHONE_APP]: false,
77
+ [COMPANY_FEATURES.SERVICE_REPORTS]: false,
78
+ [COMPANY_FEATURES.SHIFT_MANAGEMENT]: false,
79
+ [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
80
+ [COMPANY_FEATURES.TRANSFERS]: false,
70
81
  [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: false,
71
82
  },
72
83
  [PLANS.PRO]: {
73
- [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
74
- [COMPANY_FEATURES.PHONE_APP]: false,
75
84
  [COMPANY_FEATURES.ACCOUNTING]: false,
76
85
  [COMPANY_FEATURES.INVENTORY]: false,
86
+ [COMPANY_FEATURES.PHONE_APP]: false,
87
+ [COMPANY_FEATURES.SERVICE_REPORTS]: false,
88
+ [COMPANY_FEATURES.SHIFT_MANAGEMENT]: false,
89
+ [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
90
+ [COMPANY_FEATURES.TRANSFERS]: false,
77
91
  [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: false,
78
92
  },
79
93
  [PLANS.ENTERPRISE]: {
80
- [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
81
- [COMPANY_FEATURES.PHONE_APP]: false,
82
94
  [COMPANY_FEATURES.ACCOUNTING]: false,
83
95
  [COMPANY_FEATURES.INVENTORY]: false,
96
+ [COMPANY_FEATURES.PHONE_APP]: false,
97
+ [COMPANY_FEATURES.SERVICE_REPORTS]: false,
98
+ [COMPANY_FEATURES.SHIFT_MANAGEMENT]: false,
99
+ [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
100
+ [COMPANY_FEATURES.TRANSFERS]: false,
84
101
  [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: false,
85
102
  },
86
103
  [PLANS.UNLIMITED]: {
87
- [COMPANY_FEATURES.SMS_COMMUNICATION]: true,
88
- [COMPANY_FEATURES.PHONE_APP]: true,
89
- [COMPANY_FEATURES.ACCOUNTING]: true,
90
- [COMPANY_FEATURES.INVENTORY]: true,
91
- [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: true,
104
+ [COMPANY_FEATURES.ACCOUNTING]: false,
105
+ [COMPANY_FEATURES.INVENTORY]: false,
106
+ [COMPANY_FEATURES.PHONE_APP]: false,
107
+ [COMPANY_FEATURES.SERVICE_REPORTS]: false,
108
+ [COMPANY_FEATURES.SHIFT_MANAGEMENT]: false,
109
+ [COMPANY_FEATURES.SMS_COMMUNICATION]: false,
110
+ [COMPANY_FEATURES.TRANSFERS]: false,
111
+ [COMPANY_FEATURES.WEBSITE_NOTIFICATIONS]: false,
92
112
  },
93
113
  };
94
114
 
115
+ const FEATURE_PERMISSION_DEPENDENCIES = {
116
+ [PERMISSION_TYPES.ACCESS_TO_ACCOUNTING]: [COMPANY_FEATURES.ACCOUNTING],
117
+ [PERMISSION_TYPES.ACCESS_TO_INVENTORY]: [COMPANY_FEATURES.INVENTORY],
118
+ [PERMISSION_TYPES.ACCESS_TO_WRITE_INVENTORY]: [COMPANY_FEATURES.INVENTORY],
119
+ [PERMISSION_TYPES.ACCESS_TO_SERVISTESIN]: [COMPANY_FEATURES.PHONE_APP],
120
+ [PERMISSION_TYPES.ACCESS_TO_LIVE]: [COMPANY_FEATURES.PHONE_APP],
121
+ [PERMISSION_TYPES.ACCESS_TO_SERVICE_REPORTS]: [COMPANY_FEATURES.SERVICE_REPORTS],
122
+ [PERMISSION_TYPES.ACCESS_TO_TRANSFERS]: [COMPANY_FEATURES.TRANSFERS],
123
+ [PERMISSION_TYPES.ACCESS_TO_SHIFTS]: [COMPANY_FEATURES.SHIFT_MANAGEMENT],
124
+ };
125
+
126
+ const isPermissionAvailableForCompanyFeature = (companyFeatures = {}, permissionType) => {
127
+ const featureKeys = FEATURE_PERMISSION_DEPENDENCIES[permissionType];
128
+
129
+ if (!featureKeys || featureKeys.length === 0) return true;
130
+
131
+ return featureKeys.some((featureKey) => !!companyFeatures[featureKey]);
132
+ };
133
+
95
134
  module.exports = {
96
135
  PLANS,
97
136
  PLAN_QUOTAS,
98
137
  COMPANY_FEATURES,
99
138
  COMPANY_DOMAINS,
100
139
  PLAN_FEATURES,
140
+ FEATURE_PERMISSION_DEPENDENCIES,
141
+ isPermissionAvailableForCompanyFeature,
101
142
  };
@@ -25,6 +25,7 @@ const CLIENT_STATUSES = {
25
25
  ACTIVE: "ACTIVE",
26
26
  PENDING: "PENDING",
27
27
  DISABLED: "DISABLED",
28
+ REMOVED: "REMOVED",
28
29
  };
29
30
 
30
31
  const SCHOOL_TYPES = {
@@ -1,24 +1,24 @@
1
1
  const PERMISSION_TYPES = {
2
- ACCESS_TO_SCHOOLS: "accessToSchools", // Page level - always true for now
3
- ACCESS_TO_USERS: "accessToUsers", // Page level - always true for now
2
+ ACCESS_TO_ADMIN: "accessToAdmin", // manual integration - be careful with this one
3
+ ACCESS_TO_GIVE_PERMISSIONS: "accessToGivePermissions", // only first sign up is true - be careful with this one
4
4
  ACCESS_TO_PERSONELS: "accessToPersonels", // Initial selection is company domain based
5
5
  ACCESS_TO_STUDENTS: "accessToStudents", // Initial selection is company domain based
6
- ACCESS_TO_SHIFTS: "accessToShifts", //
7
- ACCESS_TO_STOPS: "accessToStops",
8
- ACCESS_TO_SERVICE_REPORTS: "accessToServiceReports",
9
- ACCESS_TO_ACCOUNTING: "accessToAccounting",
10
- ACCESS_TO_TRANSFERS: "accessToTransfers",
11
- ACCESS_TO_IKARUS: "accessToIkarus",
12
- ACCESS_TO_LIVE: "accessToLive",
13
- USE_DESCRIPTION: "useDescription",
14
- USE_CARD_ID: "useCardId",
15
- ACCESS_TO_ADMIN: "accessToAdmin",
16
- ACCESS_TO_INVENTORY: "accessToInventory",
17
- ACCESS_TO_WALKING_DISTANCE: "accessToWalkingDistance",
18
- ACCESS_TO_WRITE_INVENTORY: "accessToWriteInventory",
19
- ACCESS_TO_SERVISTESIN: "accessToServistesin",
20
- ACCESS_TO_TRACK_VEHICLE_ONLY: "accessToTrackVehicleOnly",
21
- ACCESS_TO_GIVE_PERMISSIONS: "accessToGivePermissions",
6
+ ACCESS_TO_SHIFTS: "accessToShifts", // feature based
7
+ ACCESS_TO_SERVICE_REPORTS: "accessToServiceReports", // feature based
8
+ ACCESS_TO_ACCOUNTING: "accessToAccounting", // feature based
9
+ ACCESS_TO_TRANSFERS: "accessToTransfers", // feature based
10
+ ACCESS_TO_LIVE: "accessToLive", // feature based
11
+ ACCESS_TO_INVENTORY: "accessToInventory", // feature based
12
+ ACCESS_TO_WRITE_INVENTORY: "accessToWriteInventory", // feature based
13
+ ACCESS_TO_SERVISTESIN: "accessToServistesin", // feature based
14
+ ACCESS_TO_TRACK_VEHICLE_ONLY: "accessToTrackVehicleOnly", // manual integration
15
+ ACCESS_TO_SCHOOLS: "accessToSchools", // Navigation level - always true for now
16
+ ACCESS_TO_USERS: "accessToUsers", // Navigation level - always true for now
17
+ ACCESS_TO_IKARUS: "accessToIkarus", // should be always false for now
18
+ ACCESS_TO_STOPS: "accessToStops", // should be always false for now
19
+ ACCESS_TO_WALKING_DISTANCE: "accessToWalkingDistance", // should be always false for now
20
+ USE_DESCRIPTION: "useDescription", // dont know yet
21
+ USE_CARD_ID: "useCardId", // dont know yet
22
22
  };
23
23
 
24
24
  module.exports = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@routebot/constants",
3
- "version": "0.3.12",
3
+ "version": "0.3.15",
4
4
  "description": "Shared constants for RouteBot FE/BE",
5
5
  "main": "index.js",
6
6
  "files": [