| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- const { Op } = require('sequelize')
- const { controllers: C } = require('@alancnet/material-framework/server')
- const { register } = C.auth.permissions
- const terminals = [
- {
- name: 'Las Vegas',
- key: 'LAS'
- },
- {
- name: 'Los Angeles',
- key: 'LAX'
- },
- {
- name: 'Phoenix',
- key: 'PHX'
- },
- {
- name: 'San Francisco',
- key: 'SFO'
- }
- ]
- const laborCategories = [
- {
- name: 'Warehouse',
- key: 'WAREHOUSE'
- },
- {
- name: 'Admin',
- key: 'ADMIN'
- },
- {
- name: 'Delivery',
- key: 'DELIVERY'
- },
- {
- name: 'Ops',
- key: 'OPS'
- }
- ]
- const serviceCategories = [
- {
- name: 'Inbound',
- key: 'INBOUND',
- laborCategories: [
- 'WAREHOUSE',
- 'ADMIN',
- 'OPS'
- ]
- },
- {
- name: 'Delivery',
- key: 'DELIVERY',
- laborCategories: [
- 'DELIVERY'
- ]
- }
- ]
- 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',
- 'TERMINAL_ALL_ACCESS',
- 'TERMINAL_CREATE',
- 'TERMINAL_DELETE',
- 'TERMINAL_READ',
- 'TERMINAL_UNDELETE',
- 'TERMINAL_UPDATE',
- 'METRICS_VIEW',
- 'CLIENT_CREATE',
- 'CLIENT_DELETE',
- 'CLIENT_READ',
- 'CLIENT_UNDELETE',
- 'CLIENT_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',
- 'INCOME_ADMIN_VIEW',
- 'INCOME_DELIVERY_VIEW',
- 'INCOME_OPS_VIEW',
- 'INCOME_WAREHOUSE_VIEW',
- 'VIEW_TERMINAL_LAS',
- 'VIEW_TERMINAL_LAX',
- 'VIEW_TERMINAL_PHX',
- 'VIEW_TERMINAL_SFO'
- ].join(',')
- },
- {
- name: 'Terminal Manager',
- key: 'TERMINAL_MANAGER',
- permissions: [
- 'LABOR_CATEGORY_READ',
- 'TERMINAL_READ',
- 'METRICS_VIEW',
- 'CLIENT_CREATE',
- 'CLIENT_DELETE',
- 'CLIENT_READ',
- 'CLIENT_UNDELETE',
- 'CLIENT_UPDATE',
- 'CLIENT_VIEW',
- 'STAFFING_AGENCY_READ',
- 'STAFF_MEMBER_CREATE',
- 'STAFF_MEMBER_DELETE',
- 'STAFF_MEMBER_READ',
- 'STAFF_MEMBER_UNDELETE',
- 'STAFF_MEMBER_UPDATE',
- 'STAFF_MEMBER_VIEW'
- ]
- .concat(laborCategories.map(x => x.key).filter(key => key !== 'ADMIN').map(key => `INCOME_${key}_VIEW`))
- .join(',')
- },
- {
- name: 'Accounting',
- key: 'ACCOUNTING',
- permissions: [
- 'LABOR_CATEGORY_READ',
- 'TERMINAL_READ',
- 'CLIENT_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(laborCategories.map(x => x.key).filter(key => key !== 'ADMIN').map(key => `INCOME_${key}_VIEW`))
- .join(',')
- },
- {
- name: 'Standard User',
- key: 'USER',
- }
- ].concat(terminals.map(loc => ({
- name: `${loc.name}`,
- key: `${loc.key}`,
- permissions: `TERMINAL_${loc.key}_ACCESS`
- })))
- const initializeTerminals = async db => {
- for (let terminal of terminals) {
- const record = await db.upsert(db.Terminal, terminal)
- register(`TERMINAL_${terminal.key}_ACCESS`, `Access ${terminal.name}.`)
- console.log(`Upserted Terminal ${terminal.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 laborCategories) {
- 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 initializeServiceCategories = async db => {
- for (let category of serviceCategories) {
- const record = await db.upsert(db.ServiceCategory, category)
- const laborCategories = await db.LaborCategory.findAll({
- where: {
- key: {
- [Op.in]: category.laborCategories
- }
- }
- })
- await record.setLaborCategories(laborCategories)
- console.log(`Upserted Service Category ${category.name}: ${JSON.stringify(record)}`)
- }
- }
- const init = async (db) => {
- await initializeTerminals(db)
- await initializeRoles(db)
- await initializeLaborCategories(db)
- await initializeServiceCategories(db)
- }
- module.exports = {
- initializeRoles,
- initializeLaborCategories,
- init
- }
|