prod.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. const { Op } = require('sequelize')
  2. const { controllers: C } = require('@alancnet/material-framework/server')
  3. const { register } = C.auth.permissions
  4. const terminals = [
  5. {
  6. name: 'Las Vegas',
  7. key: 'LAS'
  8. },
  9. {
  10. name: 'Los Angeles',
  11. key: 'LAX'
  12. },
  13. {
  14. name: 'Phoenix',
  15. key: 'PHX'
  16. },
  17. {
  18. name: 'San Francisco',
  19. key: 'SFO'
  20. }
  21. ]
  22. const laborCategories = [
  23. {
  24. name: 'Warehouse',
  25. key: 'WAREHOUSE'
  26. },
  27. {
  28. name: 'Admin',
  29. key: 'ADMIN'
  30. },
  31. {
  32. name: 'Delivery',
  33. key: 'DELIVERY'
  34. },
  35. {
  36. name: 'Ops',
  37. key: 'OPS'
  38. }
  39. ]
  40. const serviceCategories = [
  41. {
  42. name: 'Inbound',
  43. key: 'INBOUND',
  44. laborCategories: [
  45. 'WAREHOUSE',
  46. 'ADMIN',
  47. 'OPS'
  48. ],
  49. displayOrder: 1
  50. },
  51. {
  52. name: 'Delivery',
  53. key: 'DELIVERY',
  54. laborCategories: [
  55. 'DELIVERY'
  56. ],
  57. displayOrder: 2
  58. }
  59. ]
  60. const roles = [
  61. {
  62. name: 'Management',
  63. key: 'MANAGER',
  64. permissions: [
  65. 'LABOR_CATEGORY_CREATE',
  66. 'LABOR_CATEGORY_DELETE',
  67. 'LABOR_CATEGORY_READ',
  68. 'LABOR_CATEGORY_UNDELETE',
  69. 'LABOR_CATEGORY_UPDATE',
  70. 'LABOR_ENTRY',
  71. 'LABOR_VIEW',
  72. 'TERMINAL_ALL_ACCESS',
  73. 'TERMINAL_CREATE',
  74. 'TERMINAL_DELETE',
  75. 'TERMINAL_READ',
  76. 'TERMINAL_UNDELETE',
  77. 'TERMINAL_UPDATE',
  78. 'METRICS_VIEW',
  79. 'CLIENT_CREATE',
  80. 'CLIENT_DELETE',
  81. 'CLIENT_READ',
  82. 'CLIENT_UNDELETE',
  83. 'CLIENT_UPDATE',
  84. 'ROLE_CREATE',
  85. 'ROLE_DELETE',
  86. 'ROLE_READ',
  87. 'ROLE_UNDELETE',
  88. 'ROLE_UPDATE',
  89. 'SERVICES_ENTRY',
  90. 'SERVICES_VIEW',
  91. 'STAFFING_AGENCY_CREATE',
  92. 'STAFFING_AGENCY_DELETE',
  93. 'STAFFING_AGENCY_READ',
  94. 'STAFFING_AGENCY_UNDELETE',
  95. 'STAFFING_AGENCY_UPDATE',
  96. 'STAFF_MEMBER_CREATE',
  97. 'STAFF_MEMBER_DELETE',
  98. 'STAFF_MEMBER_READ',
  99. 'STAFF_MEMBER_UNDELETE',
  100. 'STAFF_MEMBER_UPDATE',
  101. 'USER_CREATE',
  102. 'USER_DELETE',
  103. 'USER_READ',
  104. 'USER_UNDELETE',
  105. 'USER_UPDATE',
  106. 'INCOME_ADMIN_VIEW',
  107. 'INCOME_DELIVERY_VIEW',
  108. 'INCOME_OPS_VIEW',
  109. 'INCOME_WAREHOUSE_VIEW',
  110. 'VIEW_TERMINAL_LAS',
  111. 'VIEW_TERMINAL_LAX',
  112. 'VIEW_TERMINAL_PHX',
  113. 'VIEW_TERMINAL_SFO'
  114. ].join(',')
  115. },
  116. {
  117. name: 'Terminal Manager',
  118. key: 'TERMINAL_MANAGER',
  119. permissions: [
  120. 'LABOR_CATEGORY_READ',
  121. 'TERMINAL_READ',
  122. 'METRICS_VIEW',
  123. 'CLIENT_CREATE',
  124. 'CLIENT_DELETE',
  125. 'CLIENT_READ',
  126. 'CLIENT_UNDELETE',
  127. 'CLIENT_UPDATE',
  128. 'CLIENT_VIEW',
  129. 'STAFFING_AGENCY_READ',
  130. 'STAFF_MEMBER_CREATE',
  131. 'STAFF_MEMBER_DELETE',
  132. 'STAFF_MEMBER_READ',
  133. 'STAFF_MEMBER_UNDELETE',
  134. 'STAFF_MEMBER_UPDATE',
  135. 'STAFF_MEMBER_VIEW'
  136. ]
  137. .concat(laborCategories.map(x => x.key).filter(key => key !== 'ADMIN').map(key => `INCOME_${key}_VIEW`))
  138. .join(',')
  139. },
  140. {
  141. name: 'Accounting',
  142. key: 'ACCOUNTING',
  143. permissions: [
  144. 'LABOR_CATEGORY_READ',
  145. 'TERMINAL_READ',
  146. 'CLIENT_READ',
  147. 'STAFFING_AGENCY_CREATE',
  148. 'STAFFING_AGENCY_DELETE',
  149. 'STAFFING_AGENCY_READ',
  150. 'STAFFING_AGENCY_UNDELETE',
  151. 'STAFFING_AGENCY_UPDATE',
  152. 'STAFF_MEMBER_CREATE',
  153. 'STAFF_MEMBER_DELETE',
  154. 'STAFF_MEMBER_READ',
  155. 'STAFF_MEMBER_UNDELETE',
  156. 'STAFF_MEMBER_UPDATE'
  157. ]
  158. .concat(laborCategories.map(x => x.key).filter(key => key !== 'ADMIN').map(key => `INCOME_${key}_VIEW`))
  159. .join(',')
  160. },
  161. {
  162. name: 'Standard User',
  163. key: 'USER',
  164. }
  165. ].concat(terminals.map(loc => ({
  166. name: `${loc.name}`,
  167. key: `${loc.key}`,
  168. permissions: `TERMINAL_${loc.key}_ACCESS`
  169. })))
  170. const initializeTerminals = async db => {
  171. await db.fill(db.Terminal, terminals)
  172. for (let terminal of terminals) {
  173. register(`TERMINAL_${terminal.key}_ACCESS`, `Access ${terminal.name}.`)
  174. }
  175. }
  176. const initializeRoles = async db => {
  177. await db.fill(db.Role, roles)
  178. }
  179. const initializeLaborCategories = async db => {
  180. await db.fill(db.LaborCategory, laborCategories)
  181. for (let category of laborCategories) {
  182. register(`INCOME_${category.key}_VIEW`, `View ${category.name} Staff income.`)
  183. }
  184. }
  185. const initializeServiceCategories = async db => {
  186. await db.fill(db.ServiceCategory, serviceCategories)
  187. }
  188. const seed = async (db) => {
  189. await initializeTerminals(db)
  190. await initializeRoles(db)
  191. await initializeLaborCategories(db)
  192. await initializeServiceCategories(db)
  193. }
  194. module.exports = Object.assign(seed, {
  195. seed,
  196. initializeTerminals,
  197. initializeRoles,
  198. initializeLaborCategories,
  199. initializeServiceCategories
  200. })