lesli_shield 0.1.1 → 1.0.0

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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/lesli_shield/application.js +1 -4415
  3. data/app/assets/javascripts/lesli_shield/confirmations.js +1 -47
  4. data/app/assets/javascripts/lesli_shield/passwords.js +1 -699
  5. data/app/assets/javascripts/lesli_shield/registrations.js +1 -699
  6. data/app/assets/javascripts/lesli_shield/sessions.js +1 -699
  7. data/app/assets/stylesheets/lesli_shield/application.css +0 -3
  8. data/app/assets/stylesheets/lesli_shield/confirmations.css +0 -25828
  9. data/app/assets/stylesheets/lesli_shield/devise/oauth.css +1 -0
  10. data/app/assets/stylesheets/lesli_shield/passwords.css +1 -25812
  11. data/app/assets/stylesheets/lesli_shield/registrations.css +1 -26168
  12. data/app/assets/stylesheets/lesli_shield/sessions.css +1 -26168
  13. data/app/assets/stylesheets/lesli_shield/users.css +1 -0
  14. data/app/controllers/lesli_shield/application_controller.rb +2 -2
  15. data/app/controllers/lesli_shield/dashboards_controller.rb +8 -1
  16. data/app/controllers/lesli_shield/role/actions_controller.rb +13 -0
  17. data/app/controllers/lesli_shield/roles_controller.rb +182 -0
  18. data/app/controllers/lesli_shield/sessions_controller.rb +67 -0
  19. data/app/controllers/lesli_shield/settings_controller.rb +61 -0
  20. data/app/controllers/lesli_shield/users_controller.rb +90 -0
  21. data/app/controllers/users/confirmations_controller.rb +2 -1
  22. data/app/controllers/users/passwords_controller.rb +31 -35
  23. data/app/controllers/users/registrations_controller.rb +28 -33
  24. data/app/controllers/users/sessions_controller.rb +38 -48
  25. data/app/helpers/lesli_shield/sessions_helper.rb +4 -0
  26. data/app/helpers/lesli_shield/settings_helper.rb +4 -0
  27. data/app/helpers/lesli_shield/users_helper.rb +4 -0
  28. data/app/interfaces/lesli_shield/authentication_interface.rb +64 -0
  29. data/app/interfaces/lesli_shield/authorization_interface.rb +40 -0
  30. data/app/models/lesli_shield/application_record.rb +3 -3
  31. data/app/models/lesli_shield/setting.rb +4 -0
  32. data/app/models/lesli_shield/user.rb +5 -0
  33. data/app/views/devise/confirmations/new.html.erb +14 -0
  34. data/app/views/devise/passwords/edit.html.erb +27 -69
  35. data/app/views/devise/passwords/new.html.erb +31 -73
  36. data/app/views/devise/registrations/new.html.erb +43 -97
  37. data/app/views/devise/sessions/new.html.erb +48 -68
  38. data/app/views/devise/shared/_demo.html.erb +6 -7
  39. data/app/views/devise/shared/_error_messages.html.erb +27 -13
  40. data/app/views/devise/shared/_links.html.erb +1 -1
  41. data/app/views/lesli_shield/dashboards/index.html.erb +8 -0
  42. data/app/views/lesli_shield/dashboards/show.html.erb +1 -1
  43. data/{db/migrate/v1/0801050210_create_lesli_shield_dashboard_components.rb → app/views/lesli_shield/partials/_navigation.html.erb} +7 -21
  44. data/app/views/lesli_shield/roles/_form-information.html.erb +21 -0
  45. data/app/views/lesli_shield/roles/_form-privileges.html.erb +78 -0
  46. data/app/views/lesli_shield/roles/_session.html.erb +2 -0
  47. data/app/views/lesli_shield/roles/edit.html.erb +12 -0
  48. data/app/views/lesli_shield/roles/index.html.erb +45 -0
  49. data/app/views/lesli_shield/roles/new.html.erb +11 -0
  50. data/app/views/lesli_shield/roles/show.html.erb +13 -0
  51. data/app/views/lesli_shield/roles/update.turbo_stream.erb +3 -0
  52. data/app/views/lesli_shield/sessions/_form.html.erb +17 -0
  53. data/app/views/lesli_shield/sessions/_session.html.erb +2 -0
  54. data/app/views/lesli_shield/sessions/edit.html.erb +12 -0
  55. data/app/views/lesli_shield/sessions/index.html.erb +37 -0
  56. data/app/views/lesli_shield/sessions/new.html.erb +11 -0
  57. data/app/views/lesli_shield/sessions/show.html.erb +6 -0
  58. data/app/views/lesli_shield/settings/_form.html.erb +17 -0
  59. data/app/views/lesli_shield/settings/_setting.html.erb +2 -0
  60. data/app/views/lesli_shield/settings/edit.html.erb +12 -0
  61. data/app/views/lesli_shield/settings/index.html.erb +16 -0
  62. data/app/views/lesli_shield/settings/new.html.erb +11 -0
  63. data/app/views/lesli_shield/settings/show.html.erb +9 -0
  64. data/app/views/lesli_shield/users/_information-card.html.erb +49 -0
  65. data/app/views/lesli_shield/users/_information-form.html.erb +12 -0
  66. data/app/views/lesli_shield/users/_management-sessions.html.erb +27 -0
  67. data/app/views/lesli_shield/users/_viewer-activities.html.erb +5 -0
  68. data/app/views/lesli_shield/users/edit.html.erb +0 -0
  69. data/app/views/lesli_shield/users/index.html.erb +45 -0
  70. data/app/views/lesli_shield/users/new.html.erb +11 -0
  71. data/app/views/lesli_shield/users/show.html.erb +27 -0
  72. data/app/views/lesli_shield/users/update.turbo_stream.erb +3 -0
  73. data/config/locales/translations.en.yml +1 -22
  74. data/config/locales/translations.es.yml +1 -22
  75. data/config/locales/translations.fr.yml +1 -22
  76. data/config/locales/translations.it.yml +1 -22
  77. data/config/locales/translations.pt.yml +1 -22
  78. data/config/routes.rb +31 -7
  79. data/db/migrate/v1/0801000110_create_lesli_shield_accounts.rb +3 -8
  80. data/db/migrate/v1/0801001710_create_lesli_shield_settings.rb +37 -0
  81. data/db/migrate/v1/{0801050110_create_lesli_shield_dashboards.rb → 0801003010_create_lesli_shield_dashboards.rb} +3 -17
  82. data/db/migrate/v1/0801120310_create_lesli_shield_user_shortcuts.rb +44 -0
  83. data/db/migrate/v1/0801120410_create_lesli_shield_user_tokens.rb +46 -0
  84. data/lib/lesli_shield/engine.rb +1 -1
  85. data/lib/lesli_shield/routing.rb +0 -3
  86. data/lib/lesli_shield/version.rb +2 -2
  87. data/lib/scss/_devise-simple.scss +90 -0
  88. data/lib/scss/_devise.scss +162 -0
  89. data/lib/scss/application.scss +6 -0
  90. data/lib/scss/confirmations.scss +24 -24
  91. data/lib/scss/devise/oauth.scss +1 -1
  92. data/lib/scss/passwords.scss +4 -2
  93. data/lib/scss/registrations.scss +2 -2
  94. data/lib/scss/sessions.scss +2 -2
  95. data/lib/scss/users.scss +58 -0
  96. data/lib/tasks/lesli_shield_tasks.rake +49 -4
  97. data/lib/vue/application.js +7 -0
  98. data/lib/vue/apps/sessions/index.vue +50 -0
  99. data/lib/vue/stores/sessions.js +43 -0
  100. data/readme.md +3 -3
  101. metadata +61 -11
  102. data/app/views/layouts/lesli_shield/application.html.erb +0 -15
@@ -0,0 +1,2 @@
1
+ <div id="<%= dom_id session %>">
2
+ </div>
@@ -0,0 +1,12 @@
1
+ <% content_for :title, "Editing session" %>
2
+
3
+ <h1>Editing session</h1>
4
+
5
+ <%= render "form", session: @session %>
6
+
7
+ <br>
8
+
9
+ <div>
10
+ <%= link_to "Show this session", @session %> |
11
+ <%= link_to "Back to sessions", sessions_path %>
12
+ </div>
@@ -0,0 +1,37 @@
1
+
2
+ <%
3
+ columns = [{
4
+ field: "id",
5
+ label: "ID"
6
+ }, {
7
+ field: "first_name",
8
+ label: "User name"
9
+ }, {
10
+ field: "session_source",
11
+ label: "Source"
12
+ }, {
13
+ field: "created_at_string",
14
+ label: "Created at"
15
+ }, {
16
+ field: "last_used_at_string",
17
+ label: "Last used at"
18
+ }, {
19
+ field: "device",
20
+ label: "Device"
21
+ }]
22
+ %>
23
+ <%= render LesliView::Layout::Container.new("shield-sessions") do %>
24
+ <%= render LesliView::Components::Header.new("Sessions") do %>
25
+ <%= render(LesliView::Elements::Button.new(icon: "add", solid:true)) do %>
26
+ Add new
27
+ <% end %>
28
+ <%= render(LesliView::Elements::Button.new(icon: "refresh")) do %>
29
+ Reload
30
+ <% end %>
31
+ <% end %>
32
+ <%= render LesliView::Components::Toolbar.new() %>
33
+ <%= render(LesliView::Elements::Table.new(
34
+ columns: columns,
35
+ records: @sessions[:records]
36
+ )) %>
37
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <% content_for :title, "New session" %>
2
+
3
+ <h1>New session</h1>
4
+
5
+ <%= render "form", session: @session %>
6
+
7
+ <br>
8
+
9
+ <div>
10
+ <%= link_to "Back to sessions", sessions_path %>
11
+ </div>
@@ -0,0 +1,6 @@
1
+
2
+
3
+ <h2>show session</h2>
4
+
5
+
6
+ <a href="/sessions" data-turbo-action="replace">show</a>
@@ -0,0 +1,17 @@
1
+ <%= form_with(model: setting) do |form| %>
2
+ <% if setting.errors.any? %>
3
+ <div style="color: red">
4
+ <h2><%= pluralize(setting.errors.count, "error") %> prohibited this setting from being saved:</h2>
5
+
6
+ <ul>
7
+ <% setting.errors.each do |error| %>
8
+ <li><%= error.full_message %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
13
+
14
+ <div>
15
+ <%= form.submit %>
16
+ </div>
17
+ <% end %>
@@ -0,0 +1,2 @@
1
+ <div id="<%= dom_id setting %>">
2
+ </div>
@@ -0,0 +1,12 @@
1
+ <% content_for :title, "Editing setting" %>
2
+
3
+ <h1>Editing setting</h1>
4
+
5
+ <%= render "form", setting: @setting %>
6
+
7
+ <br>
8
+
9
+ <div>
10
+ <%= link_to "Show this setting", @setting %> |
11
+ <%= link_to "Back to settings", settings_path %>
12
+ </div>
@@ -0,0 +1,16 @@
1
+ <p style="color: green"><%= notice %></p>
2
+
3
+ <% content_for :title, "Settings" %>
4
+
5
+ <h1>Settings</h1>
6
+
7
+ <div id="settings">
8
+ <% @settings.each do |setting| %>
9
+ <%= render setting %>
10
+ <p>
11
+ <%= link_to "Show this setting", setting %>
12
+ </p>
13
+ <% end %>
14
+ </div>
15
+
16
+ <%= link_to "New setting", new_setting_path %>
@@ -0,0 +1,11 @@
1
+ <% content_for :title, "New setting" %>
2
+
3
+ <h1>New setting</h1>
4
+
5
+ <%= render "form", setting: @setting %>
6
+
7
+ <br>
8
+
9
+ <div>
10
+ <%= link_to "Back to settings", settings_path %>
11
+ </div>
@@ -0,0 +1,9 @@
1
+
2
+
3
+ <%= render LesliView::Layout::Container.new("shield-settings") do %>
4
+ <%= render LesliView::Components::Header.new("Settings") do %>
5
+ <%= render(LesliView::Elements::Button.new(icon: "refresh")) do %>
6
+ Reload
7
+ <% end %>
8
+ <% end %>
9
+ <% end %>
@@ -0,0 +1,49 @@
1
+ <div class="user-information-card level mb-4 mt-6">
2
+ <div class="level-left">
3
+ <div class="level-item">
4
+ <%= render LesliView::Elements::Avatar.new(
5
+ name: @user.full_name
6
+ ) %>
7
+ </div>
8
+ <div class="level-item">
9
+ <div>
10
+ <h5 class="title is-size-5 mb-0">
11
+ <%= @user.full_name %>
12
+ </h5>
13
+ <p><%= @user.title %></p>
14
+ <div class="level is-mobile">
15
+ <div class="level-left">
16
+ <a class="level-item"
17
+ href="'mailto:'+storeUser.user.email">
18
+ <span class="icon is-small mr-2">
19
+ <span class="material-icons">
20
+ email
21
+ </span>
22
+ </span>
23
+ <%= @user.email %>
24
+ </a>
25
+ <a class="level-item mx-2"
26
+ href="'tel:'+storeUser.user.telephone">
27
+ <span class="icon is-small mr-2">
28
+ <span class="material-icons">
29
+ phone
30
+ </span>
31
+ </span>
32
+ <%= @user.telephone %>
33
+ </a>
34
+
35
+ <!-- Show the max role -->
36
+ <p class="level-item" v-if="storeUser.role_names">
37
+ <span class="icon is-small mr-2">
38
+ <span class="material-icons">
39
+ security
40
+ </span>
41
+ </span>
42
+ <%= @user.role_names %>
43
+ </p>
44
+ </div>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </div>
@@ -0,0 +1,12 @@
1
+ <%= form_with(model: @user, builder: LesliView::Forms::Builder) do |form| %>
2
+ <%= form.fieldset do %>
3
+ <%= form.field_control(:alias) %>
4
+ <%= form.field_control(:title) %>
5
+ <%= form.field_control(:email) %>
6
+ <%= form.field_control(:first_name) %>
7
+ <%= form.field_control(:last_name) %>
8
+ <%= form.field_control(:telephone) %>
9
+ <hr/>
10
+ <%= form.field_control_submit %>
11
+ <% end %>
12
+ <% end %>
@@ -0,0 +1,27 @@
1
+
2
+ <%
3
+ columns = [{
4
+ field: "id",
5
+ label: "ID"
6
+ }, {
7
+ field: "first_name",
8
+ label: "User name"
9
+ }, {
10
+ field: "session_source",
11
+ label: "Source"
12
+ }, {
13
+ field: "created_at_string",
14
+ label: "Created at"
15
+ }, {
16
+ field: "last_used_at_string",
17
+ label: "Last used at"
18
+ }, {
19
+ field: "device",
20
+ label: "Device"
21
+ }]
22
+ %>
23
+
24
+ <%= render(LesliView::Elements::Table.new(
25
+ columns: columns,
26
+ records: @sessions
27
+ )) %>
@@ -0,0 +1,5 @@
1
+
2
+
3
+
4
+ <%#= dd @activities %>
5
+ <%= render(LesliView::Components::Timeline.new(:activities => @activities)) %>
File without changes
@@ -0,0 +1,45 @@
1
+
2
+ <%
3
+ columns = [{
4
+ field: "id",
5
+ label: "ID",
6
+ sort: true
7
+ }, {
8
+ field: "fullname",
9
+ label: "name",
10
+ sort: true
11
+ }, {
12
+ field: "email",
13
+ label: "email",
14
+ sort: true
15
+ }, {
16
+ field: "rolenames",
17
+ label: "roles",
18
+ sort: true
19
+ }, {
20
+ field: "active",
21
+ label: "status",
22
+ sort: true,
23
+ custom: true
24
+ }, {
25
+ field: "current_sign_in_at_string",
26
+ label: "last_sign_in",
27
+ sort: true
28
+ }]
29
+ %>
30
+ <%= render LesliView::Layout::Container.new("shield-sessions") do %>
31
+ <%= render LesliView::Components::Header.new("Users") do %>
32
+ <%= render(LesliView::Elements::Button.new(icon: "add", solid:true)) do %>
33
+ Add new
34
+ <% end %>
35
+ <%= render(LesliView::Elements::Button.new(icon: "refresh")) do %>
36
+ Reload
37
+ <% end %>
38
+ <% end %>
39
+ <%= render LesliView::Components::Toolbar.new() %>
40
+ <%= render(LesliView::Elements::Table.new(
41
+ columns: columns,
42
+ records: @users[:records],
43
+ link: lambda {|user| user_path(user.id) }
44
+ )) %>
45
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <% content_for :title, "New user" %>
2
+
3
+ <h1>New user</h1>
4
+
5
+ <%= render "form", user: @user %>
6
+
7
+ <br>
8
+
9
+ <div>
10
+ <%= link_to "Back to users", users_path %>
11
+ </div>
@@ -0,0 +1,27 @@
1
+ <%= render LesliView::Layout::Container.new("shield-users-show") do %>
2
+
3
+ <%= render "information-card" %>
4
+
5
+ <%= render LesliView::Components::Tabs.new() do |tabs| %>
6
+
7
+ <% tabs.with_tab(title:"information", icon:"info_outline") do %>
8
+ <%= render "information-form" %>
9
+ <% end %>
10
+ <% tabs.with_tab(title:"Privileges", icon:"security") do %>
11
+ <% end %>
12
+
13
+ <% tabs.with_tab(title:"Security", icon:"lock_outline") do %>
14
+ <% end %>
15
+
16
+ <% tabs.with_tab(title:"Sessions", icon:"devices") do %>
17
+ <%= render "management-sessions" %>
18
+ <% end %>
19
+
20
+ <% tabs.with_tab(title:"Settings", icon:"settings") do %>
21
+ <% end %>
22
+
23
+ <% tabs.with_tab(title:"Activities", icon:"history") do %>
24
+ <%= render "viewer-activities" %>
25
+ <% end %>
26
+ <% end %>
27
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <%= turbo_stream.replace "application-lesli-notifications" do %>
2
+ <%= render "lesli/partials/application-lesli-notifications" %>
3
+ <% end %>
@@ -1,23 +1,2 @@
1
1
  ---
2
- :en:
3
- lesli:
4
- shared:
5
- view_discussions: Discussions
6
- button_add_new: Add new
7
- button_reload: Reload
8
- view_files: Files
9
- view_quick_actions: Quick actions
10
- button_list: List
11
- button_save: Save
12
- button_delete: Delete
13
- button_edit: Edit
14
- view_status_active: Active
15
- view_status_inactive: Inactive
16
- button_settings: Settings
17
- button_show: Show
18
- toolbar_search: Search...
19
- message_operation_success: Operation completed successfully
20
- message_operation_error: Operation failed. Please try again.
21
- application:
22
- navigation_logout: Logout
23
- navigation_my_profile: My profile
2
+ :en: {}
@@ -1,23 +1,2 @@
1
1
  ---
2
- :es:
3
- lesli:
4
- shared:
5
- view_discussions: Discusiones
6
- button_add_new: Agregar nuevo
7
- button_reload: Recargar
8
- view_files: Archivos
9
- view_quick_actions: Acciones rapidas
10
- button_list: Lista
11
- button_save: Guardar
12
- button_delete: Eliminar
13
- button_edit: Editar
14
- view_status_active: Activo
15
- view_status_inactive: Inactivo
16
- button_settings: Configuración
17
- button_show: Ver
18
- toolbar_search: Buscar...
19
- message_operation_success: Operacion realizada satisfactoriamente
20
- message_operation_error: Operación fallida. Por favor, inténtelo de nuevo.
21
- application:
22
- navigation_logout: Cerrar sesión
23
- navigation_my_profile: Mi perfil
2
+ :es: {}
@@ -1,23 +1,2 @@
1
1
  ---
2
- :fr:
3
- lesli:
4
- shared:
5
- view_discussions: ":lesli.shared.view_discussions:"
6
- button_add_new: ":lesli.shared.button_add_new:"
7
- button_reload: ":lesli.shared.button_reload:"
8
- view_files: ":lesli.shared.view_files:"
9
- view_quick_actions: ":lesli.shared.view_quick_actions:"
10
- button_list: ":lesli.shared.button_list:"
11
- button_save: ":lesli.shared.button_save:"
12
- button_delete: ":lesli.shared.button_delete:"
13
- button_edit: ":lesli.shared.button_edit:"
14
- view_status_active: ":lesli.shared.view_status_active:"
15
- view_status_inactive: ":lesli.shared.view_status_inactive:"
16
- button_settings: ":lesli.shared.button_settings:"
17
- button_show: ":lesli.shared.button_show:"
18
- toolbar_search: ":lesli.shared.toolbar_search:"
19
- message_operation_success: ":lesli.shared.message_operation_success:"
20
- message_operation_error: ":lesli.shared.message_operation_error:"
21
- application:
22
- navigation_logout: ":lesli.application.navigation_logout:"
23
- navigation_my_profile: ":lesli.application.navigation_my_profile:"
2
+ :fr: {}
@@ -1,23 +1,2 @@
1
1
  ---
2
- :it:
3
- lesli:
4
- shared:
5
- view_discussions: ":lesli.shared.view_discussions:"
6
- button_add_new: ":lesli.shared.button_add_new:"
7
- button_reload: ":lesli.shared.button_reload:"
8
- view_files: ":lesli.shared.view_files:"
9
- view_quick_actions: ":lesli.shared.view_quick_actions:"
10
- button_list: ":lesli.shared.button_list:"
11
- button_save: ":lesli.shared.button_save:"
12
- button_delete: ":lesli.shared.button_delete:"
13
- button_edit: ":lesli.shared.button_edit:"
14
- view_status_active: ":lesli.shared.view_status_active:"
15
- view_status_inactive: ":lesli.shared.view_status_inactive:"
16
- button_settings: ":lesli.shared.button_settings:"
17
- button_show: ":lesli.shared.button_show:"
18
- toolbar_search: ":lesli.shared.toolbar_search:"
19
- message_operation_success: ":lesli.shared.message_operation_success:"
20
- message_operation_error: ":lesli.shared.message_operation_error:"
21
- application:
22
- navigation_logout: ":lesli.application.navigation_logout:"
23
- navigation_my_profile: ":lesli.application.navigation_my_profile:"
2
+ :it: {}
@@ -1,23 +1,2 @@
1
1
  ---
2
- :pt:
3
- lesli:
4
- shared:
5
- view_discussions: ":lesli.shared.view_discussions:"
6
- button_add_new: ":lesli.shared.button_add_new:"
7
- button_reload: ":lesli.shared.button_reload:"
8
- view_files: ":lesli.shared.view_files:"
9
- view_quick_actions: ":lesli.shared.view_quick_actions:"
10
- button_list: ":lesli.shared.button_list:"
11
- button_save: ":lesli.shared.button_save:"
12
- button_delete: ":lesli.shared.button_delete:"
13
- button_edit: ":lesli.shared.button_edit:"
14
- view_status_active: ":lesli.shared.view_status_active:"
15
- view_status_inactive: ":lesli.shared.view_status_inactive:"
16
- button_settings: ":lesli.shared.button_settings:"
17
- button_show: ":lesli.shared.button_show:"
18
- toolbar_search: ":lesli.shared.toolbar_search:"
19
- message_operation_success: ":lesli.shared.message_operation_success:"
20
- message_operation_error: ":lesli.shared.message_operation_error:"
21
- application:
22
- navigation_logout: ":lesli.application.navigation_logout:"
23
- navigation_my_profile: ":lesli.application.navigation_my_profile:"
2
+ :pt: {}
data/config/routes.rb CHANGED
@@ -43,16 +43,40 @@ Building a better future, one line of code at a time.
43
43
 
44
44
  # ·
45
45
  LesliShield::Engine.routes.draw do
46
- root to: "dashboards#show"
47
46
 
48
- resource :dashboard, only: [:show]
49
- resources :dashboards do
47
+ Lesli::Routing.mount_dashboard_for(LesliShield)
48
+
49
+ resources :sessions, only: [:index, :show]
50
+ resources :users, only: [:index, :show, :update] do
51
+
52
+ # extensions to the user methods
53
+ scope module: :user do
54
+
55
+ # sessions management
56
+ resources :sessions, only: [:index, :destroy]
57
+
58
+ # assign and remove roles to users
59
+ resources :roles, only: [:index, :create, :destroy]
60
+
61
+ # shortcuts
62
+ resources :shortcuts, only: [:index, :create, :update, :destroy]
63
+
64
+ # configuration
65
+ resources :settings, only: [:create]
66
+ end
67
+ end
68
+
69
+ # Work with roles and privileges
70
+ resources :roles, only: [:index, :show, :edit, :update, :new, :create, :destroy] do
50
71
  collection do
51
- post "list" => :index
52
- get :options
72
+ get :list
53
73
  end
54
- scope module: :dashboard do
55
- resources :components
74
+ scope module: :role do
75
+ resources :privileges
76
+ resources :actions
56
77
  end
57
78
  end
79
+
80
+ #
81
+ resource :settings, only: [:show]
58
82
  end
@@ -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
@@ -32,11 +32,6 @@ Building a better future, one line of code at a time.
32
32
 
33
33
  class CreateLesliShieldAccounts < ActiveRecord::Migration[6.0]
34
34
  def change
35
- create_table :lesli_shield_accounts do |t|
36
- t.integer :status
37
- t.datetime :deleted_at, index: true
38
- t.timestamps
39
- end
40
- add_reference(:lesli_shield_accounts, :account, foreign_key: { to_table: :lesli_accounts })
35
+ create_table_lesli_shared_account_10(:lesli_shield)
41
36
  end
42
37
  end
@@ -0,0 +1,37 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails Development Platform.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+ class CreateLesliShieldSettings < ActiveRecord::Migration[6.0]
34
+ def change
35
+ create_table_lesli_shared_settings_10(:lesli_shield)
36
+ end
37
+ end
@@ -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
@@ -32,20 +32,6 @@ Building a better future, one line of code at a time.
32
32
 
33
33
  class CreateLesliShieldDashboards < ActiveRecord::Migration[6.1]
34
34
  def change
35
- gem_path = Lesli::System.engine("Lesli", "dir")
36
- table_base_structure = JSON.parse(File.read(File.join(gem_path, "db", "structure", "00000501_dashboards.json")))
37
- create_table :lesli_shield_dashboards do |t|
38
- table_base_structure.each do |column|
39
- t.send(
40
- column["type"].parameterize.underscore.to_sym,
41
- column["name"].parameterize.underscore.to_sym
42
- )
43
- end
44
- t.timestamps
45
- end
46
-
47
- add_reference(:lesli_shield_dashboards, :account, foreign_key: { to_table: :lesli_shield_accounts })
48
- add_reference(:lesli_shield_dashboards, :user, foreign_key: { to_table: :lesli_users })
49
- #add_reference(:lesli_admin_dashboards, :role, foreign_key: { to_table: :roles })
35
+ create_table_lesli_shared_dashboards_10(:lesli_shield)
50
36
  end
51
37
  end