initialize.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. const { controllers: C } = require('@alancnet/material-framework/server')
  2. const { register } = C.auth.permissions
  3. const locations = [
  4. {
  5. name: 'Las Vegas',
  6. key: 'LAS'
  7. },
  8. {
  9. name: 'Los Angeles',
  10. key: 'LAX'
  11. },
  12. {
  13. name: 'Phoenix',
  14. key: 'PHX'
  15. },
  16. {
  17. name: 'San Francisco',
  18. key: 'SFO'
  19. }
  20. ]
  21. const categories = [
  22. {
  23. name: 'Warehouse',
  24. key: 'WAREHOUSE'
  25. },
  26. {
  27. name: 'Admin',
  28. key: 'ADMIN'
  29. },
  30. {
  31. name: 'Delivery',
  32. key: 'DELIVERY'
  33. },
  34. {
  35. name: 'Ops',
  36. key: 'OPS'
  37. }
  38. ]
  39. const roles = [
  40. {
  41. name: 'Management',
  42. key: 'MANAGER',
  43. permissions: [
  44. 'LABOR_CATEGORY_CREATE',
  45. 'LABOR_CATEGORY_DELETE',
  46. 'LABOR_CATEGORY_READ',
  47. 'LABOR_CATEGORY_UNDELETE',
  48. 'LABOR_CATEGORY_UPDATE',
  49. 'LABOR_ENTRY',
  50. 'LABOR_VIEW',
  51. 'LOCATION_ALL_ACCESS',
  52. 'LOCATION_CREATE',
  53. 'LOCATION_DELETE',
  54. 'LOCATION_READ',
  55. 'LOCATION_UNDELETE',
  56. 'LOCATION_UPDATE',
  57. 'METRICS_VIEW',
  58. 'RETAILER_CREATE',
  59. 'RETAILER_DELETE',
  60. 'RETAILER_READ',
  61. 'RETAILER_UNDELETE',
  62. 'RETAILER_UPDATE',
  63. 'ROLE_CREATE',
  64. 'ROLE_DELETE',
  65. 'ROLE_READ',
  66. 'ROLE_UNDELETE',
  67. 'ROLE_UPDATE',
  68. 'SERVICES_ENTRY',
  69. 'SERVICES_VIEW',
  70. 'STAFFING_AGENCY_CREATE',
  71. 'STAFFING_AGENCY_DELETE',
  72. 'STAFFING_AGENCY_READ',
  73. 'STAFFING_AGENCY_UNDELETE',
  74. 'STAFFING_AGENCY_UPDATE',
  75. 'STAFF_MEMBER_CREATE',
  76. 'STAFF_MEMBER_DELETE',
  77. 'STAFF_MEMBER_READ',
  78. 'STAFF_MEMBER_UNDELETE',
  79. 'STAFF_MEMBER_UPDATE',
  80. 'USER_CREATE',
  81. 'USER_DELETE',
  82. 'USER_READ',
  83. 'USER_UNDELETE',
  84. 'USER_UPDATE',
  85. 'VIEW_INCOME_ADMIN',
  86. 'VIEW_INCOME_DELIVERY',
  87. 'VIEW_INCOME_OPS',
  88. 'VIEW_INCOME_WAREHOUSE',
  89. 'VIEW_LOCATION_LAS',
  90. 'VIEW_LOCATION_LAX',
  91. 'VIEW_LOCATION_PHX',
  92. 'VIEW_LOCATION_SFO'
  93. ].join(',')
  94. },
  95. {
  96. name: 'Terminal Manager',
  97. key: 'TERMINAL_MANAGER',
  98. permissions: [
  99. 'LABOR_CATEGORY_READ',
  100. 'LOCATION_READ',
  101. 'METRICS_VIEW',
  102. 'RETAILER_CREATE',
  103. 'RETAILER_DELETE',
  104. 'RETAILER_READ',
  105. 'RETAILER_UNDELETE',
  106. 'RETAILER_UPDATE',
  107. 'STAFFING_AGENCY_READ',
  108. 'STAFF_MEMBER_CREATE',
  109. 'STAFF_MEMBER_DELETE',
  110. 'STAFF_MEMBER_READ',
  111. 'STAFF_MEMBER_UNDELETE',
  112. 'STAFF_MEMBER_UPDATE'
  113. ]
  114. .concat(categories.map(x => x.key).filter(key => key !== 'ADMIN').map(key => `INCOME_${key}_VIEW`))
  115. .join(',')
  116. },
  117. {
  118. name: 'Accounting',
  119. key: 'ACCOUNTING',
  120. permissions: [
  121. 'LABOR_CATEGORY_READ',
  122. 'LOCATION_READ',
  123. 'RETAILER_READ',
  124. 'STAFFING_AGENCY_CREATE',
  125. 'STAFFING_AGENCY_DELETE',
  126. 'STAFFING_AGENCY_READ',
  127. 'STAFFING_AGENCY_UNDELETE',
  128. 'STAFFING_AGENCY_UPDATE',
  129. 'STAFF_MEMBER_CREATE',
  130. 'STAFF_MEMBER_DELETE',
  131. 'STAFF_MEMBER_READ',
  132. 'STAFF_MEMBER_UNDELETE',
  133. 'STAFF_MEMBER_UPDATE'
  134. ]
  135. .concat(categories.map(x => x.key).filter(key => key !== 'ADMIN').map(key => `INCOME_${key}_VIEW`))
  136. .join(',')
  137. },
  138. {
  139. name: 'Standard User',
  140. key: 'USER',
  141. }
  142. ].concat(locations.map(loc => ({
  143. name: `${loc.name}`,
  144. key: `${loc.key}`,
  145. permissions: `LOCATION_${loc.key}_ACCESS`
  146. })))
  147. const initializeLocations = async db => {
  148. for (let location of locations) {
  149. const record = await db.upsert(db.Location, location)
  150. register(`LOCATION_${location.key}_ACCESS`, `Access ${location.name}.`)
  151. console.log(`Upserted Location ${location.name}: ${JSON.stringify(record)}`)
  152. }
  153. }
  154. const initializeRoles = async db => {
  155. for (let role of roles) {
  156. const record = await db.upsert(db.Role, role)
  157. console.log(`Upserted Role ${role.name}: ${JSON.stringify(record)}`)
  158. }
  159. }
  160. const initializeLaborCategories = async db => {
  161. for (let category of categories) {
  162. const record = await db.upsert(db.LaborCategory, category)
  163. register(`INCOME_${category.key}_VIEW`, `View ${category.name} Staff income.`)
  164. console.log(`Upserted Labor Category ${category.name}: ${JSON.stringify(record)}`)
  165. }
  166. }
  167. const init = async (db) => {
  168. await initializeLocations(db)
  169. await initializeRoles(db)
  170. await initializeLaborCategories(db)
  171. }
  172. module.exports = {
  173. initializeRoles,
  174. initializeLaborCategories,
  175. init
  176. }