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 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', 'TERMINAL_ALL_ACCESS', 'TERMINAL_CREATE', 'TERMINAL_DELETE', 'TERMINAL_READ', 'TERMINAL_UNDELETE', 'TERMINAL_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_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', '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', 'TERMINAL_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(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 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 initializeTerminals(db) await initializeRoles(db) await initializeLaborCategories(db) } module.exports = { initializeRoles, initializeLaborCategories, init }