|
|
@@ -0,0 +1,186 @@
|
|
|
+const { controllers: C } = require('@alancnet/material-framework/server')
|
|
|
+const { register } = C.auth.permissions
|
|
|
+const locations = [
|
|
|
+ {
|
|
|
+ name: 'Las Vegas',
|
|
|
+ key: 'LAS'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'Los Angeles',
|
|
|
+ key: 'LAX'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'Phoenix',
|
|
|
+ key: 'PHX'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'San Francisco',
|
|
|
+ key: 'SFO'
|
|
|
+ }
|
|
|
+]
|
|
|
+
|
|
|
+const categories = [
|
|
|
+ {
|
|
|
+ name: 'Warehouse',
|
|
|
+ key: 'WAREHOUSE'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'Admin',
|
|
|
+ key: 'ADMIN'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'Delivery',
|
|
|
+ key: 'DELIVERY'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'Ops',
|
|
|
+ key: 'OPS'
|
|
|
+ }
|
|
|
+]
|
|
|
+
|
|
|
+const roles = [
|
|
|
+ {
|
|
|
+ name: 'Management',
|
|
|
+ key: 'MANAGER',
|
|
|
+ permissions: [
|
|
|
+ 'LABOR_CATEGORY_CREATE',
|
|
|
+ 'LABOR_CATEGORY_DELETE',
|
|
|
+ 'LABOR_CATEGORY_READ',
|
|
|
+ 'LABOR_CATEGORY_UNDELETE',
|
|
|
+ 'LABOR_CATEGORY_UPDATE',
|
|
|
+ 'LABOR_ENTRY',
|
|
|
+ 'LABOR_VIEW',
|
|
|
+ 'LOCATION_ALL_ACCESS',
|
|
|
+ 'LOCATION_CREATE',
|
|
|
+ 'LOCATION_DELETE',
|
|
|
+ 'LOCATION_READ',
|
|
|
+ 'LOCATION_UNDELETE',
|
|
|
+ 'LOCATION_UPDATE',
|
|
|
+ 'METRICS_VIEW',
|
|
|
+ 'RETAILER_CREATE',
|
|
|
+ 'RETAILER_DELETE',
|
|
|
+ 'RETAILER_READ',
|
|
|
+ 'RETAILER_UNDELETE',
|
|
|
+ 'RETAILER_UPDATE',
|
|
|
+ 'ROLE_CREATE',
|
|
|
+ 'ROLE_DELETE',
|
|
|
+ 'ROLE_READ',
|
|
|
+ 'ROLE_UNDELETE',
|
|
|
+ 'ROLE_UPDATE',
|
|
|
+ 'SERVICES_ENTRY',
|
|
|
+ 'SERVICES_VIEW',
|
|
|
+ 'STAFFING_AGENCY_CREATE',
|
|
|
+ 'STAFFING_AGENCY_DELETE',
|
|
|
+ 'STAFFING_AGENCY_READ',
|
|
|
+ 'STAFFING_AGENCY_UNDELETE',
|
|
|
+ 'STAFFING_AGENCY_UPDATE',
|
|
|
+ 'STAFF_MEMBER_CREATE',
|
|
|
+ 'STAFF_MEMBER_DELETE',
|
|
|
+ 'STAFF_MEMBER_READ',
|
|
|
+ 'STAFF_MEMBER_UNDELETE',
|
|
|
+ 'STAFF_MEMBER_UPDATE',
|
|
|
+ 'USER_CREATE',
|
|
|
+ 'USER_DELETE',
|
|
|
+ 'USER_READ',
|
|
|
+ 'USER_UNDELETE',
|
|
|
+ 'USER_UPDATE',
|
|
|
+ 'VIEW_INCOME_ADMIN',
|
|
|
+ 'VIEW_INCOME_DELIVERY',
|
|
|
+ 'VIEW_INCOME_OPS',
|
|
|
+ 'VIEW_INCOME_WAREHOUSE',
|
|
|
+ 'VIEW_LOCATION_LAS',
|
|
|
+ 'VIEW_LOCATION_LAX',
|
|
|
+ 'VIEW_LOCATION_PHX',
|
|
|
+ 'VIEW_LOCATION_SFO'
|
|
|
+ ].join(',')
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'Terminal Manager',
|
|
|
+ key: 'TERMINAL_MANAGER',
|
|
|
+ permissions: [
|
|
|
+ 'LABOR_CATEGORY_READ',
|
|
|
+ 'LOCATION_READ',
|
|
|
+ 'METRICS_VIEW',
|
|
|
+ 'RETAILER_CREATE',
|
|
|
+ 'RETAILER_DELETE',
|
|
|
+ 'RETAILER_READ',
|
|
|
+ 'RETAILER_UNDELETE',
|
|
|
+ 'RETAILER_UPDATE',
|
|
|
+ 'STAFFING_AGENCY_READ',
|
|
|
+ 'STAFF_MEMBER_CREATE',
|
|
|
+ 'STAFF_MEMBER_DELETE',
|
|
|
+ 'STAFF_MEMBER_READ',
|
|
|
+ 'STAFF_MEMBER_UNDELETE',
|
|
|
+ 'STAFF_MEMBER_UPDATE'
|
|
|
+ ]
|
|
|
+ .concat(categories.map(x => x.key).filter(key => key !== 'ADMIN').map(key => `INCOME_${key}_VIEW`))
|
|
|
+ .join(',')
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'Accounting',
|
|
|
+ key: 'ACCOUNTING',
|
|
|
+ permissions: [
|
|
|
+ 'LABOR_CATEGORY_READ',
|
|
|
+ 'LOCATION_READ',
|
|
|
+ 'RETAILER_READ',
|
|
|
+ 'STAFFING_AGENCY_CREATE',
|
|
|
+ 'STAFFING_AGENCY_DELETE',
|
|
|
+ 'STAFFING_AGENCY_READ',
|
|
|
+ 'STAFFING_AGENCY_UNDELETE',
|
|
|
+ 'STAFFING_AGENCY_UPDATE',
|
|
|
+ 'STAFF_MEMBER_CREATE',
|
|
|
+ 'STAFF_MEMBER_DELETE',
|
|
|
+ 'STAFF_MEMBER_READ',
|
|
|
+ 'STAFF_MEMBER_UNDELETE',
|
|
|
+ 'STAFF_MEMBER_UPDATE'
|
|
|
+ ]
|
|
|
+ .concat(categories.map(x => x.key).filter(key => key !== 'ADMIN').map(key => `INCOME_${key}_VIEW`))
|
|
|
+ .join(',')
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'Standard User',
|
|
|
+ key: 'USER',
|
|
|
+ }
|
|
|
+].concat(locations.map(loc => ({
|
|
|
+ name: `${loc.name}`,
|
|
|
+ key: `${loc.key}`,
|
|
|
+ permissions: `LOCATION_${loc.key}_ACCESS`
|
|
|
+})))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+const initializeLocations = async db => {
|
|
|
+
|
|
|
+ for (let location of locations) {
|
|
|
+ const record = await db.upsert(db.Location, location)
|
|
|
+ register(`LOCATION_${location.key}_ACCESS`, `Access ${location.name}.`)
|
|
|
+ console.log(`Upserted Location ${location.name}: ${JSON.stringify(record)}`)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const initializeRoles = async db => {
|
|
|
+ for (let role of roles) {
|
|
|
+ const record = await db.upsert(db.Role, role)
|
|
|
+ console.log(`Upserted Role ${role.name}: ${JSON.stringify(record)}`)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const initializeLaborCategories = async db => {
|
|
|
+ for (let category of categories) {
|
|
|
+ const record = await db.upsert(db.LaborCategory, category)
|
|
|
+ register(`INCOME_${category.key}_VIEW`, `View ${category.name} Staff income.`)
|
|
|
+ console.log(`Upserted Labor Category ${category.name}: ${JSON.stringify(record)}`)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const init = async (db) => {
|
|
|
+ await initializeLocations(db)
|
|
|
+ await initializeRoles(db)
|
|
|
+ await initializeLaborCategories(db)
|
|
|
+}
|
|
|
+
|
|
|
+module.exports = {
|
|
|
+ initializeRoles,
|
|
|
+ initializeLaborCategories,
|
|
|
+ init
|
|
|
+}
|