lesli 5.0.13 → 5.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/lesli_manifest.js +3 -6
  3. data/app/assets/images/lesli/brand/app-icon.svg +45 -39
  4. data/app/assets/javascripts/lesli/application.js +1 -0
  5. data/app/controllers/lesli/abouts_controller.rb +16 -14
  6. data/app/controllers/lesli/application_controller.rb +13 -0
  7. data/app/controllers/lesli/application_devise_controller.rb +10 -12
  8. data/app/controllers/lesli/application_lesli_controller.rb +12 -11
  9. data/app/controllers/lesli/apps_controller.rb +6 -0
  10. data/app/controllers/lesli/roles_controller.rb +2 -2
  11. data/app/helpers/lesli/general_helper.rb +18 -5
  12. data/app/helpers/lesli/html_helper.rb +8 -0
  13. data/app/helpers/lesli/navigation_helper.rb +30 -11
  14. data/app/helpers/lesli/system_helper.rb +2 -2
  15. data/app/helpers/lesli/turbo_helper.rb +58 -0
  16. data/app/interfaces/lesli/customization_interface.rb +42 -0
  17. data/app/interfaces/lesli/requester_interface.rb +103 -0
  18. data/app/interfaces/lesli/responder_interface.rb +127 -0
  19. data/app/lib/date2.rb +1 -199
  20. data/app/lib/lesli/courier.rb +54 -0
  21. data/app/mailers/lesli/application_lesli_mailer.rb +32 -59
  22. data/app/mailers/lesli/devise_mailer.rb +16 -8
  23. data/app/models/concerns/account_initializer.rb +27 -68
  24. data/app/models/concerns/lesli/has_activities.rb +29 -0
  25. data/app/models/concerns/user_extensions.rb +34 -19
  26. data/app/models/concerns/user_security.rb +4 -4
  27. data/app/models/lesli/account.rb +13 -20
  28. data/{lib/scss/layouts/application-container.scss → app/models/lesli/item/activity.rb} +11 -8
  29. data/app/models/lesli/role/{power.rb → action.rb} +6 -4
  30. data/app/models/lesli/role.rb +7 -15
  31. data/app/models/lesli/shared/catalog.rb +20 -0
  32. data/app/models/lesli/shared/dashboard.rb +1 -1
  33. data/app/models/lesli/user/activity.rb +5 -0
  34. data/app/models/lesli/user/detail.rb +5 -5
  35. data/app/models/lesli/user/{log.rb → journal.rb} +3 -3
  36. data/app/models/lesli/user/{power.rb → role.rb} +2 -3
  37. data/app/models/lesli/user/session.rb +3 -4
  38. data/app/models/lesli/user.rb +50 -46
  39. data/app/operators/lesli/controller_operator.rb +3 -1
  40. data/app/operators/lesli/{role_descriptor_operator.rb → role_operator.rb} +51 -28
  41. data/app/operators/lesli/user_registration_operator.rb +3 -2
  42. data/app/services/lesli/application_lesli_service.rb +8 -4
  43. data/app/services/lesli/role/action_service.rb +58 -0
  44. data/app/services/lesli/role_service.rb +232 -0
  45. data/app/services/lesli/{user_session_service.rb → user/session_service.rb} +23 -14
  46. data/app/services/lesli/user_service.rb +85 -1
  47. data/app/views/lesli/apps/show.html.erb +52 -0
  48. data/app/views/lesli/layouts/application-devise.html.erb +5 -7
  49. data/app/views/lesli/layouts/application-lesli.html.erb +18 -24
  50. data/app/views/lesli/partials/_application-analytics.html.erb +2 -2
  51. data/app/views/lesli/partials/_application-data.html.erb +3 -77
  52. data/app/views/lesli/partials/_application-head.html.erb +7 -4
  53. data/app/views/lesli/partials/_application-lesli-annoouncements.html.erb +49 -0
  54. data/app/views/lesli/partials/_application-lesli-header.html.erb +73 -49
  55. data/app/views/lesli/partials/_application-lesli-javascript.html.erb +3 -16
  56. data/app/views/lesli/partials/_application-lesli-navigation.html.erb +12 -9
  57. data/app/views/lesli/partials/{_application-lesli-notices.html.erb → _application-lesli-notifications.html.erb} +10 -8
  58. data/app/views/lesli/partials/_application-lesli-scss.html.erb +1 -1
  59. data/app/views/lesli/partials/_application-lesli-sidebar.html.erb +1 -1
  60. data/app/views/lesli/partials/_application-public-javascript.html.erb +1 -4
  61. data/app/views/lesli/shared/dashboards/_show.html.erb +63 -0
  62. data/app/views/lesli/wrappers/_application-devise.html.erb +4 -6
  63. data/config/importmap.rb +14 -0
  64. data/config/initializers/lesli.rb +20 -12
  65. data/config/initializers/lesli_migration_helpers.rb +61 -0
  66. data/config/locales/translations.en.yml +1 -26
  67. data/config/locales/translations.es.yml +1 -26
  68. data/config/locales/translations.fr.yml +1 -26
  69. data/config/locales/translations.it.yml +1 -26
  70. data/config/locales/translations.pt.yml +1 -26
  71. data/config/routes.rb +3 -1
  72. data/db/migrate/v1/{0010000110_create_lesli_accounts.rb → 0000000110_create_lesli_accounts.rb} +13 -12
  73. data/db/migrate/v1/0000000210_create_lesli_roles.rb +65 -0
  74. data/db/migrate/v1/0000000310_create_lesli_users.rb +99 -0
  75. data/db/migrate/v1/{0010000610_create_lesli_system_controllers.rb → 0000100110_create_lesli_system_controllers.rb} +3 -3
  76. data/db/migrate/v1/{0010000710_create_lesli_system_controller_actions.rb → 0000100210_create_lesli_system_controller_actions.rb} +3 -4
  77. data/{lib/scss/layouts/application-content.scss → db/migrate/v1/0000110310_create_lesli_account_settings.rb} +8 -6
  78. data/{app/models/lesli/user/agent.rb → db/migrate/v1/0000110410_create_lesli_account_activities.rb} +3 -3
  79. data/db/migrate/v1/0000120210_create_lesli_role_actions.rb +45 -0
  80. data/db/migrate/v1/{0010001410_create_lesli_account_logs.rb → 0000120310_create_lesli_role_privileges.rb} +8 -8
  81. data/db/{tables/0010003810_create_user_shortcuts.rb → migrate/v1/0000130210_create_lesli_user_roles.rb} +9 -12
  82. data/db/migrate/v1/0000130310_create_lesli_user_sessions.rb +56 -0
  83. data/db/{seed/production.rb → migrate/v1/0000130410_create_lesli_user_activities.rb} +7 -4
  84. data/db/{tables/0010001110_create_account_locations.rb → migrate2/0000100510_create_lesli_account_locations.rb} +6 -6
  85. data/db/{tables/0010001510_create_account_currencies.rb → migrate2/0000100610_create_lesli_account_currencies.rb} +4 -4
  86. data/db/seed/{development/accounts.rb → accounts.rb} +6 -2
  87. data/db/seed/{production/users.rb → users.rb} +4 -10
  88. data/db/seed/{tools.rb → xyz.rb} +2 -7
  89. data/db/seeds.rb +3 -2
  90. data/db/structure/00000020_catalogs.json +0 -0
  91. data/lib/generators/{application_lesli_generator.rb → application_lesli_generator_base.rb} +4 -4
  92. data/lib/generators/lesli/spec/spec_generator.rb +2 -2
  93. data/lib/generators/lesli/view/USAGE +8 -0
  94. data/lib/generators/lesli/view/templates/spec-factory.template +17 -0
  95. data/lib/generators/lesli/view/templates/spec-model.template +70 -0
  96. data/lib/generators/lesli/view/view_generator.rb +25 -0
  97. data/lib/lesli/configuration.rb +7 -10
  98. data/lib/lesli/engine.rb +22 -3
  99. data/lib/lesli/r_spec.rb +5 -2
  100. data/lib/lesli/routing.rb +42 -9
  101. data/lib/lesli/version.rb +2 -2
  102. data/lib/lesli.rb +11 -0
  103. data/lib/migrate/common.rb +94 -0
  104. data/lib/migrate/items/action_structure.rb +51 -0
  105. data/{db/migrate/v1/0010001210_create_lesli_account_activities.rb → lib/migrate/items/activity_structure.rb} +18 -16
  106. data/lib/migrate/items/attachment_structure.rb +62 -0
  107. data/{app/views/lesli/partials/_application-lesli-engines.html.erb → lib/migrate/items/discussion_structure.rb} +19 -27
  108. data/lib/migrate/items/subscriber_structure.rb +49 -0
  109. data/lib/migrate/items/version_structure.rb +53 -0
  110. data/lib/migrate/shared/account_structure.rb +21 -0
  111. data/lib/migrate/shared/catalog_structure.rb +30 -0
  112. data/lib/migrate/shared/dashboard_structure.rb +54 -0
  113. data/lib/migrate/shared/setting_structure.rb +20 -0
  114. data/lib/rspec/config/spec_coverage.rb +95 -0
  115. data/{db/migrate/v1/0010001110_create_lesli_account_settings.rb → lib/rspec/factories/lesli_account.rb} +10 -7
  116. data/{db/seed/development.rb → lib/rspec/factories/lesli_role.rb} +30 -3
  117. data/{db/seed/test.rb → lib/rspec/factories/lesli_user.rb} +32 -3
  118. data/lib/rspec/fixtures/files/lesli-icon.png +0 -0
  119. data/lib/rspec/fixtures/files/test_file_1.docx +0 -0
  120. data/{db/tables/0010001610_create_account_currency_exchange_rates.rb → lib/rspec/helpers/lesli_helper.rb} +21 -21
  121. data/lib/rspec/helpers/rails_helper.rb +134 -0
  122. data/lib/rspec/helpers/response_request_helper.rb +214 -0
  123. data/lib/rspec/helpers/response_service_helper.rb +66 -0
  124. data/lib/rspec/helpers/spec_helper.rb +99 -0
  125. data/lib/rspec/lesli_api_tester.rb +133 -0
  126. data/lib/rspec/lesli_service_tester.rb +46 -0
  127. data/{db/tables/0010001410_create_account_files.rb → lib/rspec/testers/controller.rb} +31 -20
  128. data/lib/rspec/testers/model.rb +36 -0
  129. data/lib/rspec/testers/request.rb +84 -0
  130. data/lib/tasks/lesli/db.rake +5 -3
  131. data/lib/tasks/lesli/git.rake +28 -32
  132. data/lib/tasks/lesli/github.rake +89 -0
  133. data/lib/tasks/lesli_tasks.rake +3 -3
  134. data/readme.md +28 -17
  135. metadata +134 -394
  136. data/app/assets/fonts/lesli/Domine/Domine-Variable.ttf +0 -0
  137. data/app/assets/fonts/lesli/Domine/OFL.txt +0 -97
  138. data/app/assets/fonts/lesli/MaterialDesign/icons.woff2 +0 -0
  139. data/app/assets/fonts/lesli/Montserrat/Montserrat-Variable.ttf +0 -0
  140. data/app/assets/fonts/lesli/OpenSans/OpenSans-Variable.ttf +0 -0
  141. data/app/assets/fonts/lesli/Remix/remixicon.eot +0 -0
  142. data/app/assets/fonts/lesli/Remix/remixicon.glyph.json +0 -1
  143. data/app/assets/fonts/lesli/Remix/remixicon.svg +0 -7633
  144. data/app/assets/fonts/lesli/Remix/remixicon.symbol.svg +0 -11
  145. data/app/assets/fonts/lesli/Remix/remixicon.ttf +0 -0
  146. data/app/assets/fonts/lesli/Remix/remixicon.woff +0 -0
  147. data/app/assets/fonts/lesli/Remix/remixicon.woff2 +0 -0
  148. data/app/assets/fonts/lesli/Roboto/LICENSE.txt +0 -202
  149. data/app/assets/fonts/lesli/Roboto/Roboto-Black.ttf +0 -0
  150. data/app/assets/fonts/lesli/Roboto/Roboto-BlackItalic.ttf +0 -0
  151. data/app/assets/fonts/lesli/Roboto/Roboto-Bold.ttf +0 -0
  152. data/app/assets/fonts/lesli/Roboto/Roboto-BoldItalic.ttf +0 -0
  153. data/app/assets/fonts/lesli/Roboto/Roboto-Italic.ttf +0 -0
  154. data/app/assets/fonts/lesli/Roboto/Roboto-Light.ttf +0 -0
  155. data/app/assets/fonts/lesli/Roboto/Roboto-LightItalic.ttf +0 -0
  156. data/app/assets/fonts/lesli/Roboto/Roboto-Medium.ttf +0 -0
  157. data/app/assets/fonts/lesli/Roboto/Roboto-MediumItalic.ttf +0 -0
  158. data/app/assets/fonts/lesli/Roboto/Roboto-Regular.ttf +0 -0
  159. data/app/assets/fonts/lesli/Roboto/Roboto-Thin.ttf +0 -0
  160. data/app/assets/fonts/lesli/Roboto/Roboto-ThinItalic.ttf +0 -0
  161. data/app/assets/icons/lesli/engine-admin.svg +0 -1
  162. data/app/assets/icons/lesli/engine-audit.svg +0 -1
  163. data/app/assets/icons/lesli/engine-babel.svg +0 -1
  164. data/app/assets/icons/lesli/engine-bell.svg +0 -1
  165. data/app/assets/icons/lesli/engine-books.svg +0 -1
  166. data/app/assets/icons/lesli/engine-calendar.svg +0 -1
  167. data/app/assets/icons/lesli/engine-dashboard.svg +0 -1
  168. data/app/assets/icons/lesli/engine-dispatcher.svg +0 -1
  169. data/app/assets/icons/lesli/engine-focus.svg +0 -1
  170. data/app/assets/icons/lesli/engine-kb.svg +0 -1
  171. data/app/assets/icons/lesli/engine-leaf.svg +0 -1
  172. data/app/assets/icons/lesli/engine-lesli.svg +0 -1
  173. data/app/assets/icons/lesli/engine-letter.svg +0 -1
  174. data/app/assets/icons/lesli/engine-mailer.svg +0 -1
  175. data/app/assets/icons/lesli/engine-one.svg +0 -1
  176. data/app/assets/icons/lesli/engine-profile.svg +0 -1
  177. data/app/assets/icons/lesli/engine-proposal.svg +0 -1
  178. data/app/assets/icons/lesli/engine-scraper.svg +0 -1
  179. data/app/assets/icons/lesli/engine-security.svg +0 -1
  180. data/app/assets/icons/lesli/engine-shared.svg +0 -1
  181. data/app/assets/icons/lesli/engine-shield.svg +0 -1
  182. data/app/assets/icons/lesli/engine-storage.svg +0 -1
  183. data/app/assets/icons/lesli/engine-support.svg +0 -1
  184. data/app/assets/icons/lesli/engine-talk.svg +0 -1
  185. data/app/assets/icons/lesli/engine-team.svg +0 -1
  186. data/app/assets/icons/lesli/engine-time.svg +0 -1
  187. data/app/assets/icons/lesli/locale-en.svg +0 -1
  188. data/app/assets/icons/lesli/locale-es.svg +0 -1
  189. data/app/assets/icons/lesli/locale-fr.svg +0 -1
  190. data/app/assets/icons/lesli/locale-it.svg +0 -1
  191. data/app/assets/icons/lesli/locale-pt.svg +0 -1
  192. data/app/assets/icons/readme.md +0 -10
  193. data/app/assets/javascripts/lesli/templates/application.js +0 -14
  194. data/app/assets/javascripts/lesli/templates/public.js +0 -14
  195. data/app/assets/stylesheets/lesli/templates/application.css +0 -2918
  196. data/app/assets/stylesheets/lesli/templates/public.css +0 -1
  197. data/app/controllers/lesli/interfaces/application/authorization.rb +0 -107
  198. data/app/controllers/lesli/interfaces/application/customization.rb +0 -46
  199. data/app/controllers/lesli/interfaces/application/logger.rb +0 -134
  200. data/app/controllers/lesli/interfaces/application/requester.rb +0 -84
  201. data/app/controllers/lesli/interfaces/application/responder.rb +0 -132
  202. data/app/controllers/lesli/interfaces/controllers/actions.rb +0 -250
  203. data/app/controllers/lesli/interfaces/controllers/activities.rb +0 -215
  204. data/app/controllers/lesli/interfaces/controllers/discussions.rb +0 -270
  205. data/app/controllers/lesli/interfaces/controllers/files.rb +0 -467
  206. data/app/controllers/lesli/interfaces/controllers/subscribers.rb +0 -234
  207. data/app/lib/lesli/system.rb +0 -110
  208. data/app/models/lesli/cloud_object/action.rb +0 -70
  209. data/app/models/lesli/cloud_object/activity.rb +0 -311
  210. data/app/models/lesli/cloud_object/custom_field.rb +0 -158
  211. data/app/models/lesli/cloud_object/discussion.rb +0 -219
  212. data/app/models/lesli/cloud_object/subscriber.rb +0 -186
  213. data/app/operators/lesli/descriptor_privilege_operator.rb +0 -75
  214. data/app/views/lesli/emails/devise_mailer/confirmation_instructions.html.erb +0 -23
  215. data/app/views/lesli/emails/devise_mailer/reset_password_instructions.html.erb +0 -23
  216. data/app/views/lesli/partials/_application-lesli-icons.html.erb +0 -1
  217. data/config/initializers/devise.rb +0 -336
  218. data/db/seed/development/users.rb +0 -52
  219. data/db/seed/production/accounts.rb +0 -50
  220. data/db/structure/00000000_people.json +0 -34
  221. data/db/structure/00000003_actions.json +0 -14
  222. data/db/structure/00000004_activities.json +0 -20
  223. data/db/structure/00000005_discussions.json +0 -8
  224. data/db/structure/00000006_files.json +0 -32
  225. data/db/structure/00000007_subscribers.json +0 -11
  226. data/db/structure/00000501_dashboards.json +0 -14
  227. data/db/structure/00000502_dashboard_components.json +0 -23
  228. data/db/tables/0010003410_create_user_activities.rb +0 -51
  229. data/db/tables/0010003710_create_user_codes.rb +0 -43
  230. data/db/tables/0010004110_create_user_tokens.rb +0 -45
  231. data/db/tables/0010005610_create_role_activities.rb +0 -50
  232. data/db/tables/0010009010_create_feedbacks.rb +0 -56
  233. data/lib/mailer_previews/devise_mailer_preview.rb +0 -49
  234. data/lib/scss/cloud-objects/discussion.scss +0 -80
  235. data/lib/scss/cloud-objects/file.scss +0 -138
  236. data/lib/scss/components/keypad.scss +0 -109
  237. data/lib/scss/elements/autocomplete.scss +0 -72
  238. data/lib/scss/elements/card.scss +0 -37
  239. data/lib/scss/elements/empty.scss +0 -43
  240. data/lib/scss/elements/file-uploader.scss +0 -74
  241. data/lib/scss/elements/gallery.scss +0 -98
  242. data/lib/scss/elements/input-tag.scss +0 -73
  243. data/lib/scss/elements/loading.scss +0 -63
  244. data/lib/scss/elements/map.scss +0 -107
  245. data/lib/scss/elements/navbar.scss +0 -115
  246. data/lib/scss/elements/table.scss +0 -118
  247. data/lib/scss/elements/toolbar.scss +0 -66
  248. data/lib/scss/fonts/families.scss +0 -47
  249. data/lib/scss/fonts/mdicons.scss +0 -82
  250. data/lib/scss/fonts/remixicons.scss +0 -2602
  251. data/lib/scss/helpers/display.scss +0 -44
  252. data/lib/scss/helpers/tooltip.scss +0 -91
  253. data/lib/scss/layouts/application-announcements.scss +0 -40
  254. data/lib/scss/layouts/application-component.scss +0 -39
  255. data/lib/scss/layouts/application-engines.scss +0 -125
  256. data/lib/scss/layouts/application-footer.scss +0 -102
  257. data/lib/scss/layouts/application-header.scss +0 -91
  258. data/lib/scss/layouts/application-navigation.scss +0 -79
  259. data/lib/scss/layouts/application-search.scss +0 -71
  260. data/lib/scss/layouts/application-sidebar.scss +0 -219
  261. data/lib/scss/overrides/notification.scss +0 -75
  262. data/lib/scss/overrides/sweetalert.scss +0 -106
  263. data/lib/scss/pages/devise-simple.scss +0 -89
  264. data/lib/scss/pages/devise.scss +0 -179
  265. data/lib/scss/pages/invites.scss +0 -81
  266. data/lib/scss/panels/panel-announcements.scss +0 -56
  267. data/lib/scss/panels/panel-notification.scss +0 -67
  268. data/lib/scss/panels/panel-profile.scss +0 -62
  269. data/lib/scss/panels/panel-support-ticket.scss +0 -56
  270. data/lib/scss/panels/panel-tasks.scss +0 -41
  271. data/lib/scss/settings/variables.scss +0 -148
  272. data/lib/scss/shared/workflow-status-progress.scss +0 -135
  273. data/lib/scss/templates/application.scss +0 -127
  274. data/lib/scss/templates/component.scss +0 -39
  275. data/lib/scss/templates/dashboards.scss +0 -53
  276. data/lib/scss/templates/empty.scss +0 -42
  277. data/lib/scss/templates/pdf.scss +0 -45
  278. data/lib/scss/templates/public.scss +0 -72
  279. data/lib/vue/application.js +0 -285
  280. data/lib/vue/cloudobjects/discussion/content.vue +0 -62
  281. data/lib/vue/cloudobjects/discussion/element.vue +0 -170
  282. data/lib/vue/cloudobjects/discussion/filters.vue +0 -108
  283. data/lib/vue/cloudobjects/discussion/new.vue +0 -134
  284. data/lib/vue/cloudobjects/discussion.vue +0 -99
  285. data/lib/vue/cloudobjects/stores/discussion.js +0 -212
  286. data/lib/vue/layouts/application-announcements.vue +0 -78
  287. data/lib/vue/layouts/application-component.vue +0 -38
  288. data/lib/vue/layouts/application-container.vue +0 -48
  289. data/lib/vue/layouts/application-engines.vue +0 -66
  290. data/lib/vue/layouts/application-footer.vue +0 -123
  291. data/lib/vue/layouts/application-header.vue +0 -252
  292. data/lib/vue/layouts/application-navbar.vue +0 -110
  293. data/lib/vue/layouts/application-search.vue +0 -86
  294. data/lib/vue/layouts/application-sidebar.vue +0 -63
  295. data/lib/vue/pages/errors/app.js +0 -32
  296. data/lib/vue/pages/invites/app.js +0 -76
  297. data/lib/vue/pages/mfas/application.js +0 -77
  298. data/lib/vue/pages/onboarding/application.js +0 -45
  299. data/lib/vue/pages/onboarding/components/address.vue +0 -120
  300. data/lib/vue/pages/onboarding/components/buttons.vue +0 -67
  301. data/lib/vue/pages/onboarding/components/contact.vue +0 -148
  302. data/lib/vue/pages/onboarding/components/date-time.vue +0 -265
  303. data/lib/vue/pages/onboarding/components/finish.vue +0 -62
  304. data/lib/vue/pages/onboarding/components/general-info.vue +0 -93
  305. data/lib/vue/pages/onboarding/components/indicators.vue +0 -78
  306. data/lib/vue/pages/onboarding/components/welcome.vue +0 -66
  307. data/lib/vue/pages/onboarding/show.vue +0 -67
  308. data/lib/vue/pages/onboarding/store.js +0 -165
  309. data/lib/vue/pages/otps/application.js +0 -90
  310. data/lib/vue/pages/passes/application.js +0 -80
  311. data/lib/vue/pages/websites/application.js +0 -34
  312. data/lib/vue/panels/panel-announcements.vue +0 -248
  313. data/lib/vue/panels/panel-bell-notifications.vue +0 -102
  314. data/lib/vue/panels/panel-files.vue +0 -281
  315. data/lib/vue/panels/panel-profile.vue +0 -76
  316. data/lib/vue/panels/panel-support-tickets.vue +0 -163
  317. data/lib/vue/panels/panel-tasks.vue +0 -124
  318. data/lib/vue/panels/stores/bell-notifications.js +0 -46
  319. data/lib/vue/panels/stores/support-tickets.js +0 -103
  320. data/lib/vue/public.js +0 -83
  321. data/lib/vue/refactor/shared/cloudobjects/action.vue +0 -193
  322. data/lib/vue/refactor/shared/cloudobjects/file/grid.vue +0 -215
  323. data/lib/vue/refactor/shared/cloudobjects/file/list.vue +0 -106
  324. data/lib/vue/refactor/shared/cloudobjects/file.vue +0 -145
  325. data/lib/vue/refactor/shared/workflows2/apps/actions/form.vue +0 -232
  326. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/chatroom-form.vue +0 -103
  327. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/cloud-object-clone-form.vue +0 -125
  328. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/cloud-object-file-form.vue +0 -102
  329. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/email-form.vue +0 -190
  330. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/notification-form.vue +0 -124
  331. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/send-cloud-object-file.vue +0 -170
  332. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/task-form.vue +0 -258
  333. data/lib/vue/refactor/shared/workflows2/apps/actions/index.vue +0 -146
  334. data/lib/vue/refactor/shared/workflows2/apps/checks/form.vue +0 -200
  335. data/lib/vue/refactor/shared/workflows2/apps/checks/index.vue +0 -160
  336. data/lib/vue/refactor/shared/workflows2/apps/index.vue +0 -177
  337. data/lib/vue/refactor/shared/workflows2/apps/new.vue +0 -97
  338. data/lib/vue/refactor/shared/workflows2/apps/show.vue +0 -146
  339. data/lib/vue/refactor/shared/workflows2/components/associations.vue +0 -215
  340. data/lib/vue/refactor/shared/workflows2/components/chart.vue +0 -91
  341. data/lib/vue/refactor/shared/workflows2/components/workflow-form.vue +0 -466
  342. data/lib/vue/refactor/shared/workflows2/components/workflow-status-dropdown.vue +0 -129
  343. data/lib/vue/refactor/stores/cloudobjects/action.js +0 -181
  344. data/lib/vue/refactor/stores/cloudobjects/file.js +0 -205
  345. data/lib/vue/refactor/stores/entities/announcements.js +0 -75
  346. data/lib/vue/refactor/stores/entities/dashboard.js +0 -251
  347. data/lib/vue/refactor/stores/entities/workflow.js +0 -185
  348. data/lib/vue/refactor/stores/panels/announcements.js +0 -153
  349. data/lib/vue/refactor/stores/panels/notification.js +0 -114
  350. data/lib/vue/refactor/stores/panels/task.js +0 -66
  351. data/lib/vue/refactor/stores/panels/tickets.js +0 -129
  352. data/lib/vue/refactor/stores/role.js +0 -243
  353. data/lib/vue/refactor/stores/translations.json +0 -60
  354. data/lib/vue/refactor/stores/users.js +0 -98
  355. data/lib/vue/shared/dashboards/apps/edit.vue +0 -215
  356. data/lib/vue/shared/dashboards/apps/index.vue +0 -112
  357. data/lib/vue/shared/dashboards/apps/new.vue +0 -89
  358. data/lib/vue/shared/dashboards/apps/show.vue +0 -88
  359. data/lib/vue/shared/dashboards/components/form.vue +0 -246
  360. data/lib/vue/shared/services/firebase.js +0 -163
  361. data/lib/vue/shared/services/translator.js +0 -87
  362. data/lib/vue/shared/stores/command.js +0 -154
  363. data/lib/vue/shared/stores/dashboard.js +0 -253
  364. data/lib/vue/shared/stores/layout.js +0 -61
  365. data/lib/vue/shared/stores/systemController.js +0 -67
  366. data/lib/vue/shared/stores/users.js +0 -57
  367. data/lib/vue/stores/translations.json +0 -177
  368. data/lib/vue/translation.js +0 -45
  369. data/lib/webpack/base.js +0 -191
  370. data/lib/webpack/core.js +0 -93
  371. data/lib/webpack/engines.js +0 -167
  372. data/lib/webpack/root.js +0 -105
  373. data/lib/webpack/version.js +0 -78
  374. data/vendor/bulma/LICENSE +0 -21
  375. data/vendor/bulma/bulma.sass +0 -10
  376. data/vendor/bulma/css/bulma-rtl.css +0 -11851
  377. data/vendor/bulma/css/bulma-rtl.min.css +0 -1
  378. data/vendor/bulma/css/bulma.css +0 -11851
  379. data/vendor/bulma/css/bulma.min.css +0 -1
  380. data/vendor/bulma/sass/base/_all.sass +0 -6
  381. data/vendor/bulma/sass/base/animations.sass +0 -5
  382. data/vendor/bulma/sass/base/generic.sass +0 -145
  383. data/vendor/bulma/sass/base/helpers.sass +0 -1
  384. data/vendor/bulma/sass/base/minireset.sass +0 -79
  385. data/vendor/bulma/sass/components/_all.sass +0 -15
  386. data/vendor/bulma/sass/components/breadcrumb.sass +0 -77
  387. data/vendor/bulma/sass/components/card.sass +0 -103
  388. data/vendor/bulma/sass/components/dropdown.sass +0 -83
  389. data/vendor/bulma/sass/components/level.sass +0 -79
  390. data/vendor/bulma/sass/components/media.sass +0 -59
  391. data/vendor/bulma/sass/components/menu.sass +0 -59
  392. data/vendor/bulma/sass/components/message.sass +0 -101
  393. data/vendor/bulma/sass/components/modal.sass +0 -117
  394. data/vendor/bulma/sass/components/navbar.sass +0 -446
  395. data/vendor/bulma/sass/components/pagination.sass +0 -167
  396. data/vendor/bulma/sass/components/panel.sass +0 -121
  397. data/vendor/bulma/sass/components/tabs.sass +0 -176
  398. data/vendor/bulma/sass/elements/_all.sass +0 -16
  399. data/vendor/bulma/sass/elements/box.sass +0 -26
  400. data/vendor/bulma/sass/elements/button.sass +0 -357
  401. data/vendor/bulma/sass/elements/container.sass +0 -29
  402. data/vendor/bulma/sass/elements/content.sass +0 -162
  403. data/vendor/bulma/sass/elements/form.sass +0 -1
  404. data/vendor/bulma/sass/elements/icon.sass +0 -46
  405. data/vendor/bulma/sass/elements/image.sass +0 -73
  406. data/vendor/bulma/sass/elements/notification.sass +0 -52
  407. data/vendor/bulma/sass/elements/other.sass +0 -31
  408. data/vendor/bulma/sass/elements/progress.sass +0 -73
  409. data/vendor/bulma/sass/elements/table.sass +0 -134
  410. data/vendor/bulma/sass/elements/tag.sass +0 -140
  411. data/vendor/bulma/sass/elements/title.sass +0 -70
  412. data/vendor/bulma/sass/form/_all.sass +0 -9
  413. data/vendor/bulma/sass/form/checkbox-radio.sass +0 -22
  414. data/vendor/bulma/sass/form/file.sass +0 -184
  415. data/vendor/bulma/sass/form/input-textarea.sass +0 -66
  416. data/vendor/bulma/sass/form/select.sass +0 -88
  417. data/vendor/bulma/sass/form/shared.sass +0 -60
  418. data/vendor/bulma/sass/form/tools.sass +0 -215
  419. data/vendor/bulma/sass/grid/_all.sass +0 -5
  420. data/vendor/bulma/sass/grid/columns.sass +0 -513
  421. data/vendor/bulma/sass/grid/tiles.sass +0 -36
  422. data/vendor/bulma/sass/helpers/_all.sass +0 -12
  423. data/vendor/bulma/sass/helpers/color.sass +0 -39
  424. data/vendor/bulma/sass/helpers/flexbox.sass +0 -35
  425. data/vendor/bulma/sass/helpers/float.sass +0 -10
  426. data/vendor/bulma/sass/helpers/other.sass +0 -14
  427. data/vendor/bulma/sass/helpers/overflow.sass +0 -2
  428. data/vendor/bulma/sass/helpers/position.sass +0 -7
  429. data/vendor/bulma/sass/helpers/spacing.sass +0 -31
  430. data/vendor/bulma/sass/helpers/typography.sass +0 -103
  431. data/vendor/bulma/sass/helpers/visibility.sass +0 -122
  432. data/vendor/bulma/sass/layout/_all.sass +0 -6
  433. data/vendor/bulma/sass/layout/footer.sass +0 -11
  434. data/vendor/bulma/sass/layout/hero.sass +0 -153
  435. data/vendor/bulma/sass/layout/section.sass +0 -17
  436. data/vendor/bulma/sass/utilities/_all.sass +0 -9
  437. data/vendor/bulma/sass/utilities/animations.sass +0 -1
  438. data/vendor/bulma/sass/utilities/controls.sass +0 -49
  439. data/vendor/bulma/sass/utilities/derived-variables.sass +0 -114
  440. data/vendor/bulma/sass/utilities/extends.sass +0 -25
  441. data/vendor/bulma/sass/utilities/functions.sass +0 -135
  442. data/vendor/bulma/sass/utilities/initial-variables.sass +0 -79
  443. data/vendor/bulma/sass/utilities/mixins.sass +0 -303
  444. data/vendor/lesli-css/_index.scss +0 -34
  445. data/vendor/lesli-css/lesli.scss +0 -51
  446. data/vendor/lesli-css/license +0 -28
  447. data/vendor/lesli-css/src/base/fonts.scss +0 -50
  448. data/vendor/lesli-css/src/base/normalize.scss +0 -118
  449. data/vendor/lesli-css/src/components/blockquote.scss +0 -61
  450. data/vendor/lesli-css/src/components/columns.scss +0 -92
  451. data/vendor/lesli-css/src/components/container.scss +0 -47
  452. data/vendor/lesli-css/src/components/navigation.scss +0 -59
  453. data/vendor/lesli-css/src/functions/colors.scss +0 -184
  454. data/vendor/lesli-css/src/helpers/units.scss +0 -44
  455. data/vendor/lesli-css/src/mixins/breakpoint.scss +0 -184
  456. data/vendor/lesli-css/src/mixins/flex.scss +0 -80
  457. data/vendor/lesli-css/src/mixins/scrollbar.scss +0 -46
  458. data/vendor/lesli-css/src/settings/variables.scss +0 -26
  459. data/vendor/lesli-css/tests/base/normalize.spec.scss +0 -125
  460. data/vendor/lesli-css/tests/functions/colors.spec.scss +0 -117
  461. data/vendor/lesli-css/tests/mixins/breakpoint.spec.scss +0 -429
  462. data/vendor/lesli-css/tests/mixins/scrollbar.spec.scss +0 -82
  463. data/vendor/lesli-css/vendor/normalize.scss +0 -351
  464. data/vendor/remixicon/License +0 -201
  465. data/vendor/remixicon/fonts/remixicon.css +0 -2583
  466. /data/{vendor/lesli-css/src/components/grid.scss → app/assets/stylesheets/lesli/application.css} +0 -0
  467. /data/db/migrate/v1/{0010001010_create_lesli_account_details.rb → 0000110210_create_lesli_account_details.rb} +0 -0
  468. /data/db/structure/{00000008_custom_fields.json → 00000300_custom_fields.json} +0 -0
  469. /data/lib/assets/javascripts/lesli/{i18n.js → i18n_js} +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  Lesli
4
4
 
5
- Copyright (c) 2023, Lesli Technologies, S. A.
5
+ Copyright (c) 2025, Lesli Technologies, S. A.
6
6
 
7
7
  This program is free software: you can redistribute it and/or modify
8
8
  it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@ along with this program. If not, see http://www.gnu.org/licenses/.
19
19
 
20
20
  Lesli · Ruby on Rails SaaS Development Framework.
21
21
 
22
- Made with ♥ by https://www.lesli.tech
22
+ Made with ♥ by LesliTech
23
23
  Building a better future, one line of code at a time.
24
24
 
25
25
  @contact hello@lesli.tech
@@ -33,90 +33,49 @@ Building a better future, one line of code at a time.
33
33
  module AccountInitializer
34
34
  extend ActiveSupport::Concern
35
35
 
36
-
37
36
  # initialize minimum resources needed for the account
38
37
  def initialize_account
39
38
 
40
- return unless defined?(LesliSecurity)
41
-
42
- # create initial descriptors
43
- descriptor_owner = self.descriptors.find_or_create_by(name: "owner")
44
- descriptor_admin = self.descriptors.find_or_create_by(name: "admin")
45
- descriptor_profile = self.descriptors.find_or_create_by(name: "profile")
46
39
 
47
40
  # create default roles for the new account
48
- owner = self.roles.create_with({
49
- active: true,
50
- object_level_permission: 2147483647
51
- }).find_or_create_by(:name => "owner")
41
+ owner = self.roles
42
+ .create_with({ permission_level: 2147483647 })
43
+ .find_or_create_by(:name => "owner")
44
+
52
45
 
53
46
  # platform administrator role
54
- admin = self.roles.create_with({
55
- active: true, object_level_permission: 100000
56
- }).find_or_create_by({ name: "admin" })
47
+ admin = self.roles
48
+ .create_with({ permission_level: 100000})
49
+ .find_or_create_by(name: "admin")
50
+
57
51
 
58
52
  # access only to user profile
59
- limited = self.roles.create_with({
60
- active: true, object_level_permission: 10, path_default: "/administration/profile"
61
- }).find_or_create_by({ name: "limited" })
62
-
63
- # assign descriptors with appropriate privileges
64
- owner.powers.create_with({
65
- plist: true, pindex: true, pshow: true, pcreate: true, pupdate: true, pdestroy: true
66
- }).find_or_create_by(:descriptor => descriptor_owner)
67
-
68
- admin.powers.create_with({
69
- plist: true, pindex: true, pshow: true, pcreate: true, pupdate: true, pdestroy: true
70
- }).find_or_create_by(:descriptor => descriptor_admin)
71
-
72
- limited.powers.create_with({
73
- plist: true, pindex: true, pshow: true, pcreate: true, pupdate: true, pdestroy: true
74
- }).find_or_create_by(:descriptor => descriptor_profile)
53
+ limited = self.roles
54
+ .create_with({ permission_level: 10, path_default: "/administration/profile" })
55
+ .find_or_create_by(name: "limited")
56
+
57
+
58
+ # Add base privileges to roles
59
+ Lesli::RoleOperator.new(owner).add_owner_actions
60
+ Lesli::RoleOperator.new(admin).add_owner_actions
61
+ Lesli::RoleOperator.new(limited).add_profile_privileges
75
62
  end
76
63
 
77
64
 
78
65
  # initialize engines for new accounts
79
66
  def initialize_engines
80
67
 
81
- # 01.01 LesliAdmin - Lesli administration area
82
- if defined? LesliAdmin
83
- LesliAdmin::Account.create!(:account => self) if self.admin.blank?
84
- end
85
-
86
- # 03.01 LesliCalendar - Unified calendar app
87
- if defined? LesliCalendar
88
- LesliCalendar::Account.create!(:account => self) if self.calendar.blank?
89
- end
90
-
91
- # 03.05 LesliLetter - Notes & Notebooks
92
- if defined? LesliLetter
93
- LesliLetter::Account.create!(:account => self) if self.letter.blank?
94
- end
68
+ LesliSystem.engines.each do |engine, data|
95
69
 
96
- # 03.06 LesliDashboard -
97
- if defined? LesliDashboard
98
- LesliDashboard::Account.create!(:account => self) if self.dashboard.blank?
99
- end
70
+ next if ["Lesli", "LesliBabel", "LesliShield", "Root"].include?(engine)
100
71
 
101
- # 03.08 LesliBell - Notification system
102
- if defined? LesliBell
103
- LesliBell::Account.create!(:account => self) if self.bell.blank?
104
- end
72
+ # Skip if the engine is not defined
73
+ next unless Object.const_defined?(engine)
105
74
 
106
- # 05.02 LesliAudit - System analytics
107
- if defined? LesliAudit
108
- LesliAudit::Account.create!(:account => self) if self.audit.blank?
109
- end
75
+ #next if self.public_send(attribute).blank?
110
76
 
111
- # 07.02 LesliSupport - Support Ticket System
112
- if defined? LesliSupport
113
- LesliSupport::Account.create!(:account => self) if self.support.blank?
77
+ # Create an associated account if the attribute is blank
78
+ engine.constantize::Account.create!(account: self)
114
79
  end
115
-
116
- # 08.02 LesliSecurity - Users, Privileges & Access Management
117
- if defined? LesliGuard
118
- LesliGuard::Account.create!(:account => self) if self.guard.blank?
119
- end
120
-
121
- end
80
+ end
122
81
  end
@@ -0,0 +1,29 @@
1
+
2
+ module Lesli
3
+ module HasActivities
4
+ extend ActiveSupport::Concern
5
+
6
+ class_methods do
7
+ def has_activities_with(custom_table_name)
8
+ has_many :activities, class_name: "Lesli::Item::Activity"
9
+
10
+ Lesli::Item::Activity.class_eval do
11
+ self.table_name = custom_table_name.to_s
12
+ end
13
+ end
14
+
15
+ # thread safe - does not work yet
16
+ def has_activities_with2(custom_table_name)
17
+
18
+ # Define a unique class name per model using the model's namespace
19
+ klass = Class.new(Lesli::Item::Activity) do
20
+ self.table_name = custom_table_name
21
+ end
22
+
23
+ const_set("LocalActivity", klass)
24
+
25
+ has_many :activities, class_name: "#{self.name}::LocalActivity"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -37,6 +37,19 @@ module UserExtensions
37
37
  extend ActiveSupport::Concern
38
38
 
39
39
 
40
+ # @return [nil]
41
+ # @description Set the user alias based on the full_name.
42
+ # @example
43
+ # puts current_user.full_name # John Doe
44
+ # puts current_user.set_alias # John D.
45
+ def set_alias
46
+ if self.alias.blank?
47
+ self.alias = full_name_initials()
48
+ self.save
49
+ end
50
+ end
51
+
52
+
40
53
  # @return [void]
41
54
  # @description Register a new notification for the current user
42
55
  # @param subject String Short notification description
@@ -47,6 +60,22 @@ module UserExtensions
47
60
  Courier::Bell::Notification.new(self, subject, body:body, url:url, category:category)
48
61
  end
49
62
 
63
+ # @return [void]
64
+ # @description Register a new notification for the current user
65
+ # @param subject String Short notification description
66
+ # @param body String Long notification description
67
+ # @param url String Link to notified object
68
+ # @param category String Kind of notification: info, warning, danger, success.
69
+ def notifications quantity=5, category:"info"
70
+ query = {
71
+ :pagination => {
72
+ :perPage => quantity,
73
+ :page => 1
74
+ }
75
+ }
76
+ Lesli::Courier.new(:lesli_bell, []).from(:notification_service, self, query).call(:index)
77
+ end
78
+
50
79
 
51
80
  # @return [CloudDriver::Calendar]
52
81
  # @description Return the default calendar of the user if source_code is not provided.
@@ -57,12 +86,6 @@ module UserExtensions
57
86
  end
58
87
 
59
88
 
60
- # @return [String] The first name of this user.
61
- def name2
62
- self.first_name
63
- end
64
-
65
-
66
89
  # @return [String] The name of this user.
67
90
  # @description Retrieves and returns the name of the user depending on the available information.
68
91
  # The name can be a full name (first and last names), just the first name, or, in case the information
@@ -87,19 +110,6 @@ module UserExtensions
87
110
  end
88
111
 
89
112
 
90
- # @return [nil]
91
- # @description Set the user alias based on the full_name.
92
- # @example
93
- # puts current_user.full_name # John Doe
94
- # puts current_user.set_alias # John D.
95
- def set_alias
96
- if self.alias.blank?
97
- self.alias = full_name_initials()
98
- self.save
99
- end
100
- end
101
-
102
-
103
113
  # @return [String]
104
114
  # @description Returns the local configuration for the user if there is no locale the default local
105
115
  # of the platform will be returned
@@ -120,6 +130,11 @@ module UserExtensions
120
130
  end
121
131
 
122
132
 
133
+ def role_names
134
+ user_roles = self.lesliroles.map(&:name).join(", ")
135
+ end
136
+
137
+
123
138
  # @return [void]
124
139
  # @description Returns MFA settings configured by the user
125
140
  # Example
@@ -40,12 +40,12 @@ module UserSecurity
40
40
  def max_object_level_permission
41
41
 
42
42
  # get the max object level permission from roles assigned to the user
43
- level = self.roles.maximum(:object_level_permission)
43
+ level = self.lesliroles.maximum(:permission_level)
44
44
 
45
45
  # if user has no roles assigned, we return the lowest role available
46
46
  # NOTE: This should not be possible due the user needs a role to login
47
47
  unless level
48
- return (self.account.roles.minimum(:object_level_permission))
48
+ return (self.account.roles.minimum(:permission_level))
49
49
  end
50
50
 
51
51
  # return the level found
@@ -76,7 +76,7 @@ module UserSecurity
76
76
  return !self.privileges
77
77
  .where("lesli_role_privileges.controller = ?", controller)
78
78
  .where("lesli_role_privileges.action = ?", action)
79
- .first.blank?
79
+ .first.blank?
80
80
  rescue => exception
81
81
  return false
82
82
  end
@@ -182,7 +182,7 @@ module UserSecurity
182
182
  # Example: we should use the path of the admin role if user has
183
183
  # admin & employee roles, also order by default_path, so we get first
184
184
  # the roles with path in case the user has roles with the same object level permission
185
- role = self.roles.order(object_level_permission: :desc).order(:path_default)
185
+ role = self.lesliroles.order(object_level_permission: :desc).order(:path_default)
186
186
 
187
187
  # get the first role found, due previously we sort in a descendant order
188
188
  # the first role is going to be the one with highest object level permission
@@ -2,7 +2,7 @@
2
2
 
3
3
  Lesli
4
4
 
5
- Copyright (c) 2023, Lesli Technologies, S. A.
5
+ Copyright (c) 2025, Lesli Technologies, S. A.
6
6
 
7
7
  This program is free software: you can redistribute it and/or modify
8
8
  it under the terms of the GNU General Public License as published by
@@ -34,11 +34,10 @@ module Lesli
34
34
  class Account < ApplicationLesliRecord
35
35
  include AccountInitializer
36
36
 
37
-
38
37
  # accounts always belongs to a user
39
38
  belongs_to :user, optional: true
40
39
 
41
- #class_name: "Lesli::Account"
40
+
42
41
  has_one :detail, inverse_of: :account, autosave: true, dependent: :destroy
43
42
  accepts_nested_attributes_for :detail, update_only: true
44
43
 
@@ -46,43 +45,37 @@ module Lesli
46
45
  # account resources
47
46
  has_many :users
48
47
  has_many :roles
49
- has_many :files
50
- has_many :cronos
51
- has_many :requests
48
+ has_many :journals
52
49
  has_many :settings
53
50
  has_many :locations
54
- has_many :feedbacks
55
- has_many :descriptors
56
- has_many :activities
57
51
  has_many :currencies
58
- has_many :logs
59
52
 
60
53
 
54
+ # third-party engines associations
61
55
  has_one :bell, class_name: "LesliBell::Account"
62
56
  has_one :help, class_name: "LesliHelp::Account"
63
57
  has_one :audit, class_name: "LesliAudit::Account"
64
58
  has_one :admin, class_name: "LesliAdmin::Account"
65
59
  has_one :guard, class_name: "LesliGuard::Account"
66
60
  has_one :letter, class_name: "LesliLetter::Account"
61
+ has_one :papers, class_name: "LesliPapers::Account"
67
62
  has_one :support, class_name: "LesliSupport::Account"
68
63
  has_one :calendar, class_name: "LesliCalendar::Account"
69
64
  has_one :dashboard, class_name: "LesliDashboard::Account"
70
65
 
71
66
 
72
67
  # account statuses
73
- enum status: [
74
- :registered,
75
- :onboarding,
76
- :active,
77
- :suspended
78
- ]
68
+ enum :status, {
69
+ :active => 'active',
70
+ :suspended => 'suspended',
71
+ :registered => 'registered',
72
+ :onboarding => 'onboarding'
73
+ }
79
74
 
80
75
 
81
76
  # company region (GDPR)
82
- enum region: {
83
- latin_america: "latin_america",
84
- united_states: "united_states",
85
- european_union: "european_union"
77
+ enum :region, {
78
+ america: "america"
86
79
  }
87
80
 
88
81
 
@@ -1,8 +1,8 @@
1
- /*
1
+ =begin
2
2
 
3
3
  Lesli
4
4
 
5
- Copyright (c) 2023, Lesli Technologies, S. A.
5
+ Copyright (c) 2025, Lesli Technologies, S. A.
6
6
 
7
7
  This program is free software: you can redistribute it and/or modify
8
8
  it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@ along with this program. If not, see http://www.gnu.org/licenses/.
19
19
 
20
20
  Lesli · Ruby on Rails SaaS Development Framework.
21
21
 
22
- Made with ♥ by https://www.lesli.tech
22
+ Made with ♥ by LesliTech
23
23
  Building a better future, one line of code at a time.
24
24
 
25
25
  @contact hello@lesli.tech
@@ -28,8 +28,11 @@ Building a better future, one line of code at a time.
28
28
 
29
29
  // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
30
  // ·
31
- */
32
-
33
- section.lesli-application-container {
34
- padding: 1rem;
35
- }
31
+ =end
32
+
33
+ module Lesli
34
+ module Item
35
+ class Activity < ApplicationRecord
36
+ end
37
+ end
38
+ end
@@ -31,15 +31,17 @@ Building a better future, one line of code at a time.
31
31
  =end
32
32
 
33
33
  module Lesli
34
- class Role::Power < ApplicationLesliRecord
34
+ class Role::Action < ApplicationLesliRecord
35
35
  belongs_to :role
36
- belongs_to :descriptor
37
36
 
38
37
  after_commit :synchronize_privileges
39
- #after_destroy :synchronize_privileges
38
+ after_destroy :synchronize_privileges
39
+
40
+ belongs_to :action, class_name: "SystemController::Action"
41
+ belongs_to :system_controller_action, class_name: "SystemController::Action", foreign_key: "action_id"
40
42
 
41
43
  def synchronize_privileges
42
- RoleDescriptorOperator.new(self.role.id).synchronize
44
+ Lesli::RoleOperator.new(self).synchronize
43
45
  end
44
46
 
45
47
  def self.index current_user, query, role
@@ -2,7 +2,7 @@
2
2
 
3
3
  Lesli
4
4
 
5
- Copyright (c) 2023, Lesli Technologies, S. A.
5
+ Copyright (c) 2025, Lesli Technologies, S. A.
6
6
 
7
7
  This program is free software: you can redistribute it and/or modify
8
8
  it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@ along with this program. If not, see http://www.gnu.org/licenses/.
19
19
 
20
20
  Lesli · Ruby on Rails SaaS Development Framework.
21
21
 
22
- Made with ♥ by https://www.lesli.tech
22
+ Made with ♥ by LesliTech
23
23
  Building a better future, one line of code at a time.
24
24
 
25
25
  @contact hello@lesli.tech
@@ -35,26 +35,18 @@ module Lesli
35
35
  belongs_to :account
36
36
 
37
37
  # Role resources
38
- has_many :activities
39
- has_many :powers, dependent: :delete_all
40
- has_many :privileges, dependent: :delete_all
38
+ #has_many :activities
39
+ has_many :privileges, dependent: :delete_all
40
+ has_many :actions, dependent: :delete_all
41
+
41
42
 
42
43
  # validations
43
44
  validates :name, presence: :true
44
- validates :object_level_permission, presence: :true
45
+ validates :permission_level, presence: :true
45
46
 
46
47
  # initializers for new roles
47
48
  after_create :after_create_role
48
49
 
49
- # Return a list of roles that the user is able to work with
50
- # according to object level permission
51
- def self.list(current_user, query, params)
52
- current_user.account.roles
53
- .where("object_level_permission <= ?", current_user.max_object_level_permission)
54
- .order(object_level_permission: :desc, name: :asc)
55
- .select(:id, :name, :object_level_permission)
56
- end
57
-
58
50
  # @return [Boolean]
59
51
  # @description Returns if a role is assigned to users.
60
52
  def has_users?
@@ -0,0 +1,20 @@
1
+
2
+ module Lesli
3
+ module Shared
4
+ class Catalog < ActiveRecord::Base
5
+ self.abstract_class = true
6
+
7
+ before_save :create_catalog_key
8
+
9
+ def self.items_for(catalog, column = :name)
10
+ self.find_by(column => catalog)&.items || []
11
+ end
12
+
13
+ private
14
+
15
+ def create_catalog_key
16
+ self.key = self.name.parameterize
17
+ end
18
+ end
19
+ end
20
+ end
@@ -41,7 +41,7 @@ module Lesli
41
41
  after_update :verify_default_dashboard
42
42
  after_create :verify_default_dashboard
43
43
 
44
- enum component_ids: {}
44
+ #enum component_ids: {}
45
45
 
46
46
  # @return [void]
47
47
  # @param account [LesliEngine::Account]
@@ -0,0 +1,5 @@
1
+ module Lesli
2
+ class User::Activity < ApplicationRecord
3
+ belongs_to :user
4
+ end
5
+ end
@@ -36,11 +36,11 @@ module Lesli
36
36
 
37
37
  #before_save :validate_work_region
38
38
 
39
- enum salutation: {
40
- mr: "mr",
41
- ms: "ms",
42
- mrs: "mrs"
43
- }
39
+ # enum salutation: {
40
+ # mr: "mr",
41
+ # ms: "ms",
42
+ # mrs: "mrs"
43
+ # }
44
44
 
45
45
  protected
46
46
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Lesli
4
4
 
5
- Copyright (c) 2023, Lesli Technologies, S. A.
5
+ Copyright (c) 2025, Lesli Technologies, S. A.
6
6
 
7
7
  This program is free software: you can redistribute it and/or modify
8
8
  it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@ along with this program. If not, see http://www.gnu.org/licenses/.
19
19
 
20
20
  Lesli · Ruby on Rails SaaS Development Framework.
21
21
 
22
- Made with ♥ by https://www.lesli.tech
22
+ Made with ♥ by LesliTech
23
23
  Building a better future, one line of code at a time.
24
24
 
25
25
  @contact hello@lesli.tech
@@ -31,7 +31,7 @@ Building a better future, one line of code at a time.
31
31
  =end
32
32
 
33
33
  module Lesli
34
- class User::Log < ApplicationRecord
34
+ class User::Journal < ApplicationRecord
35
35
  belongs_to :user
36
36
  belongs_to :user_session, optional: true
37
37
  end
@@ -31,10 +31,9 @@ Building a better future, one line of code at a time.
31
31
  =end
32
32
 
33
33
  module Lesli
34
- class User::Power < ApplicationLesliRecord
34
+ class User::Role < ApplicationLesliRecord
35
35
  belongs_to :user
36
- belongs_to :role
36
+ belongs_to :role, class_name: "Lesli::Role"
37
37
  has_many :roles
38
- #has_many :privileges, through: :roles
39
38
  end
40
39
  end
@@ -36,10 +36,9 @@ module Lesli
36
36
 
37
37
  after_create :set_session_token
38
38
 
39
- enum session_sources: {
40
- dispatcher_standar_session: "dispatcher_standar_session",
41
- devise_standard_session: "devise_standar_session",
42
- cloud_shared_public: "cloud_shared_public",
39
+ enum session_source: {
40
+ :dispatcher_standard_session => "dispatcher_standard_session",
41
+ :devise_standard_session => "devise_standard_session"
43
42
  }
44
43
 
45
44
  def set_session_token