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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/lesli_shield/application.js +1 -4415
- data/app/assets/javascripts/lesli_shield/confirmations.js +1 -47
- data/app/assets/javascripts/lesli_shield/passwords.js +1 -699
- data/app/assets/javascripts/lesli_shield/registrations.js +1 -699
- data/app/assets/javascripts/lesli_shield/sessions.js +1 -699
- data/app/assets/stylesheets/lesli_shield/application.css +0 -3
- data/app/assets/stylesheets/lesli_shield/confirmations.css +0 -25828
- data/app/assets/stylesheets/lesli_shield/devise/oauth.css +1 -0
- data/app/assets/stylesheets/lesli_shield/passwords.css +1 -25812
- data/app/assets/stylesheets/lesli_shield/registrations.css +1 -26168
- data/app/assets/stylesheets/lesli_shield/sessions.css +1 -26168
- data/app/assets/stylesheets/lesli_shield/users.css +1 -0
- data/app/controllers/lesli_shield/application_controller.rb +2 -2
- data/app/controllers/lesli_shield/dashboards_controller.rb +8 -1
- data/app/controllers/lesli_shield/role/actions_controller.rb +13 -0
- data/app/controllers/lesli_shield/roles_controller.rb +182 -0
- data/app/controllers/lesli_shield/sessions_controller.rb +67 -0
- data/app/controllers/lesli_shield/settings_controller.rb +61 -0
- data/app/controllers/lesli_shield/users_controller.rb +90 -0
- data/app/controllers/users/confirmations_controller.rb +2 -1
- data/app/controllers/users/passwords_controller.rb +31 -35
- data/app/controllers/users/registrations_controller.rb +28 -33
- data/app/controllers/users/sessions_controller.rb +38 -48
- data/app/helpers/lesli_shield/sessions_helper.rb +4 -0
- data/app/helpers/lesli_shield/settings_helper.rb +4 -0
- data/app/helpers/lesli_shield/users_helper.rb +4 -0
- data/app/interfaces/lesli_shield/authentication_interface.rb +64 -0
- data/app/interfaces/lesli_shield/authorization_interface.rb +40 -0
- data/app/models/lesli_shield/application_record.rb +3 -3
- data/app/models/lesli_shield/setting.rb +4 -0
- data/app/models/lesli_shield/user.rb +5 -0
- data/app/views/devise/confirmations/new.html.erb +14 -0
- data/app/views/devise/passwords/edit.html.erb +27 -69
- data/app/views/devise/passwords/new.html.erb +31 -73
- data/app/views/devise/registrations/new.html.erb +43 -97
- data/app/views/devise/sessions/new.html.erb +48 -68
- data/app/views/devise/shared/_demo.html.erb +6 -7
- data/app/views/devise/shared/_error_messages.html.erb +27 -13
- data/app/views/devise/shared/_links.html.erb +1 -1
- data/app/views/lesli_shield/dashboards/index.html.erb +8 -0
- data/app/views/lesli_shield/dashboards/show.html.erb +1 -1
- data/{db/migrate/v1/0801050210_create_lesli_shield_dashboard_components.rb → app/views/lesli_shield/partials/_navigation.html.erb} +7 -21
- data/app/views/lesli_shield/roles/_form-information.html.erb +21 -0
- data/app/views/lesli_shield/roles/_form-privileges.html.erb +78 -0
- data/app/views/lesli_shield/roles/_session.html.erb +2 -0
- data/app/views/lesli_shield/roles/edit.html.erb +12 -0
- data/app/views/lesli_shield/roles/index.html.erb +45 -0
- data/app/views/lesli_shield/roles/new.html.erb +11 -0
- data/app/views/lesli_shield/roles/show.html.erb +13 -0
- data/app/views/lesli_shield/roles/update.turbo_stream.erb +3 -0
- data/app/views/lesli_shield/sessions/_form.html.erb +17 -0
- data/app/views/lesli_shield/sessions/_session.html.erb +2 -0
- data/app/views/lesli_shield/sessions/edit.html.erb +12 -0
- data/app/views/lesli_shield/sessions/index.html.erb +37 -0
- data/app/views/lesli_shield/sessions/new.html.erb +11 -0
- data/app/views/lesli_shield/sessions/show.html.erb +6 -0
- data/app/views/lesli_shield/settings/_form.html.erb +17 -0
- data/app/views/lesli_shield/settings/_setting.html.erb +2 -0
- data/app/views/lesli_shield/settings/edit.html.erb +12 -0
- data/app/views/lesli_shield/settings/index.html.erb +16 -0
- data/app/views/lesli_shield/settings/new.html.erb +11 -0
- data/app/views/lesli_shield/settings/show.html.erb +9 -0
- data/app/views/lesli_shield/users/_information-card.html.erb +49 -0
- data/app/views/lesli_shield/users/_information-form.html.erb +12 -0
- data/app/views/lesli_shield/users/_management-sessions.html.erb +27 -0
- data/app/views/lesli_shield/users/_viewer-activities.html.erb +5 -0
- data/app/views/lesli_shield/users/edit.html.erb +0 -0
- data/app/views/lesli_shield/users/index.html.erb +45 -0
- data/app/views/lesli_shield/users/new.html.erb +11 -0
- data/app/views/lesli_shield/users/show.html.erb +27 -0
- data/app/views/lesli_shield/users/update.turbo_stream.erb +3 -0
- data/config/locales/translations.en.yml +1 -22
- data/config/locales/translations.es.yml +1 -22
- data/config/locales/translations.fr.yml +1 -22
- data/config/locales/translations.it.yml +1 -22
- data/config/locales/translations.pt.yml +1 -22
- data/config/routes.rb +31 -7
- data/db/migrate/v1/0801000110_create_lesli_shield_accounts.rb +3 -8
- data/db/migrate/v1/0801001710_create_lesli_shield_settings.rb +37 -0
- data/db/migrate/v1/{0801050110_create_lesli_shield_dashboards.rb → 0801003010_create_lesli_shield_dashboards.rb} +3 -17
- data/db/migrate/v1/0801120310_create_lesli_shield_user_shortcuts.rb +44 -0
- data/db/migrate/v1/0801120410_create_lesli_shield_user_tokens.rb +46 -0
- data/lib/lesli_shield/engine.rb +1 -1
- data/lib/lesli_shield/routing.rb +0 -3
- data/lib/lesli_shield/version.rb +2 -2
- data/lib/scss/_devise-simple.scss +90 -0
- data/lib/scss/_devise.scss +162 -0
- data/lib/scss/application.scss +6 -0
- data/lib/scss/confirmations.scss +24 -24
- data/lib/scss/devise/oauth.scss +1 -1
- data/lib/scss/passwords.scss +4 -2
- data/lib/scss/registrations.scss +2 -2
- data/lib/scss/sessions.scss +2 -2
- data/lib/scss/users.scss +58 -0
- data/lib/tasks/lesli_shield_tasks.rake +49 -4
- data/lib/vue/application.js +7 -0
- data/lib/vue/apps/sessions/index.vue +50 -0
- data/lib/vue/stores/sessions.js +43 -0
- data/readme.md +3 -3
- metadata +61 -11
- data/app/views/layouts/lesli_shield/application.html.erb +0 -15
@@ -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,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,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,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
|
+
)) %>
|
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,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 %>
|
@@ -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
|
-
|
49
|
-
|
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
|
-
|
52
|
-
get :options
|
72
|
+
get :list
|
53
73
|
end
|
54
|
-
scope module: :
|
55
|
-
resources :
|
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)
|
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
|
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
|
-
|
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)
|
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
|
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
|
-
|
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
|