lesli 5.0.9 → 5.0.10
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/icons/lesli/locale-fr.svg +1 -0
- data/app/assets/icons/lesli/locale-it.svg +1 -0
- data/app/assets/icons/lesli/locale-pt.svg +1 -0
- data/app/assets/javascripts/lesli/users/sessions.js +1 -1
- data/app/controllers/lesli/application_devise_controller.rb +8 -8
- data/app/models/concerns/account_initializer.rb +3 -3
- data/app/models/lesli/descriptor.rb +3 -1
- data/app/views/lesli/layouts/application-devise.html.erb +3 -2
- data/app/views/lesli/layouts/application-lesli.html.erb +1 -1
- data/app/views/lesli/layouts/application-public.html.erb +1 -1
- data/app/views/lesli/partials/_application-analytics.html.erb +11 -25
- data/app/views/lesli/partials/_application-lesli-header.html.erb +26 -20
- data/app/views/lesli/partials/_application-lesli-icons.html.erb +1 -1
- data/config/initializers/lesli.rb +3 -3
- data/db/seed/development/users.rb +2 -2
- data/db/seed/production/accounts.rb +47 -0
- data/db/seed/production/users.rb +76 -0
- data/db/seed/production.rb +6 -7
- data/db/seeds.rb +5 -10
- data/lib/lesli/version.rb +2 -2
- data/lib/tasks/lesli/db.rake +9 -8
- data/lib/vue/layouts/application-header.vue +1 -1
- data/lib/vue/public.js +1 -1
- metadata +9 -4
|
@@ -41,14 +41,14 @@ module Lesli
|
|
|
41
41
|
|
|
42
42
|
#before_action :set_locale_public
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
44
|
+
def initialize
|
|
45
|
+
@lesli = {
|
|
46
|
+
company: {
|
|
47
|
+
name: Lesli.config.company[:name]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
super
|
|
51
|
+
end
|
|
52
52
|
|
|
53
53
|
end
|
|
54
54
|
end
|
|
@@ -39,21 +39,21 @@ module AccountInitializer
|
|
|
39
39
|
|
|
40
40
|
# create initial descriptors
|
|
41
41
|
descriptor_owner = self.descriptors.find_or_create_by(name: "owner")
|
|
42
|
-
|
|
42
|
+
descriptor_admin = self.descriptors.find_or_create_by(name: "admin")
|
|
43
43
|
descriptor_profile = self.descriptors.find_or_create_by(name: "profile")
|
|
44
44
|
|
|
45
45
|
# create default roles for the new account
|
|
46
46
|
owner = self.roles.create({ name: "owner", active: true, object_level_permission: 2147483647 })
|
|
47
47
|
|
|
48
48
|
# platform administrator role
|
|
49
|
-
|
|
49
|
+
admin = self.roles.create({ name: "admin", active: true, object_level_permission: 100000 })
|
|
50
50
|
|
|
51
51
|
# access only to user profile
|
|
52
52
|
limited = self.roles.create({ name: "limited", active: true, object_level_permission: 10, path_default: "/administration/profile" })
|
|
53
53
|
|
|
54
54
|
# assign descriptors with appropriate privileges
|
|
55
55
|
owner.powers.create(:descriptor => descriptor_owner, :plist => true, :pindex => true, :pshow => true, :pcreate => true, :pupdate => true, :pdestroy => true)
|
|
56
|
-
|
|
56
|
+
admin.powers.create(:descriptor => descriptor_admin, :plist => true, :pindex => true, :pshow => true, :pcreate => true, :pupdate => true, :pdestroy => true)
|
|
57
57
|
limited.powers.create(:descriptor => descriptor_profile, :plist => true, :pindex => true, :pshow => true, :pcreate => true, :pupdate => true, :pdestroy => true)
|
|
58
58
|
end
|
|
59
59
|
|
|
@@ -42,13 +42,15 @@ module Lesli
|
|
|
42
42
|
|
|
43
43
|
validates :name, presence: true
|
|
44
44
|
|
|
45
|
+
after_create :initialize_descriptor_privileges
|
|
46
|
+
|
|
45
47
|
def initialize_descriptor_privileges
|
|
46
48
|
|
|
47
49
|
descriptor_operator = DescriptorPrivilegeOperator.new(self)
|
|
48
50
|
|
|
49
51
|
descriptor_operator.add_profile_privileges(self) if self.name == "profile"
|
|
50
52
|
|
|
51
|
-
descriptor_operator.add_owner_privileges(self) if ["owner", "
|
|
53
|
+
descriptor_operator.add_owner_privileges(self) if ["owner", "admin"].include?(self.name)
|
|
52
54
|
|
|
53
55
|
end
|
|
54
56
|
end
|
|
@@ -35,8 +35,9 @@ Building a better future, one line of code at a time.
|
|
|
35
35
|
<!DOCTYPE html>
|
|
36
36
|
<html>
|
|
37
37
|
<head>
|
|
38
|
+
<script>const Lesli = <%= @lesli.to_json.html_safe %></script>
|
|
38
39
|
<%= render partial: "lesli/partials/application-head" %>
|
|
39
|
-
|
|
40
|
+
<%# render partial: "lesli/partials/application-data" %>
|
|
40
41
|
<%= render partial: "lesli/partials/application-public-scss" %>
|
|
41
42
|
<%= yield :application_custom_assets %>
|
|
42
43
|
<%# Disable back button in browser after Logout using JavaScript %>
|
|
@@ -53,6 +54,6 @@ Building a better future, one line of code at a time.
|
|
|
53
54
|
<%#= yield :application_public_custom_header %>
|
|
54
55
|
<%= yield %>
|
|
55
56
|
<%= render partial: "lesli/partials/application-public-javascript" %>
|
|
56
|
-
|
|
57
|
+
<%= render partial: "lesli/partials/application-analytics" %>
|
|
57
58
|
</body>
|
|
58
59
|
</html>
|
|
@@ -52,6 +52,6 @@ Building a better future, one line of code at a time.
|
|
|
52
52
|
</main>
|
|
53
53
|
<%= render partial: "lesli/partials/application-lesli-javascript" %>
|
|
54
54
|
<%= render partial: "lesli/partials/application-lesli-icons" %>
|
|
55
|
-
|
|
55
|
+
<%= render partial: "lesli/partials/application-analytics" %>
|
|
56
56
|
</body>
|
|
57
57
|
</html>
|
|
@@ -54,6 +54,6 @@ Building a better future, one line of code at a time.
|
|
|
54
54
|
<h1>public layout</h1>
|
|
55
55
|
<%#= yield %>
|
|
56
56
|
<%= render partial: "lesli/partials/application-public-javascript" %>
|
|
57
|
-
|
|
57
|
+
<%= render partial: "lesli/partials/application-analytics" %>
|
|
58
58
|
</body>
|
|
59
59
|
</html>
|
|
@@ -32,40 +32,26 @@ Building a better future, one line of code at a time.
|
|
|
32
32
|
=end
|
|
33
33
|
%>
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
<% protected_controllers = [
|
|
35
|
+
|
|
36
|
+
<% protected_controllers = ["confirmations"] %>
|
|
37
37
|
|
|
38
38
|
<% # Get an specific site tracking id or use the development default %>
|
|
39
|
-
<% tracking_id = Rails.application.credentials.dig(:providers, :analytics) ||
|
|
39
|
+
<% tracking_id = Rails.application.credentials.dig(:providers, :analytics) || "" %>
|
|
40
40
|
|
|
41
41
|
<% # check if analytics is enabled in the settings file %>
|
|
42
|
-
<% enable_analytics =
|
|
42
|
+
<% enable_analytics = Lesli.config.security[:enable_analytics] %>
|
|
43
43
|
|
|
44
44
|
<% if Rails.env.production? && enable_analytics %>
|
|
45
45
|
|
|
46
46
|
<% if !protected_controllers.include?(controller_name) %>
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
var u="https://analytics.lesli.tech/";
|
|
56
|
-
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
|
57
|
-
_paq.push(['setSiteId', <%= tracking_id %>]);
|
|
58
|
-
var d=document,
|
|
59
|
-
g=d.createElement('script'),
|
|
60
|
-
s=d.getElementsByTagName('script')[0];
|
|
61
|
-
g.async=true;
|
|
62
|
-
g.src=u+'matomo.js';
|
|
63
|
-
s.parentNode.insertBefore(g,s);
|
|
64
|
-
})();
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
setTimeout(() => { loadMatomoAnalytics() }, 2000);
|
|
68
|
-
|
|
48
|
+
<!-- Google tag (gtag.js) -->
|
|
49
|
+
<script async src="https://www.googletagmanager.com/gtag/js?id=<%= tracking_id %>"></script>
|
|
50
|
+
<script>
|
|
51
|
+
window.dataLayer = window.dataLayer || [];
|
|
52
|
+
function gtag(){dataLayer.push(arguments);}
|
|
53
|
+
gtag('js', new Date());
|
|
54
|
+
gtag('config', '<%= tracking_id %>');
|
|
69
55
|
</script>
|
|
70
56
|
<% end %>
|
|
71
57
|
<% end %>
|
|
@@ -39,28 +39,34 @@ Building a better future, one line of code at a time.
|
|
|
39
39
|
<%= "show-tickets" if defined?(LesliHelp) %>
|
|
40
40
|
engine-path="<%= defined?(LesliDashboard) ? lesli_dashboard.root_path : lesli_engine(:path)%>">
|
|
41
41
|
|
|
42
|
+
<template v-slot:brand>
|
|
43
|
+
<%= customization_instance_logo_tag(logo: "app-icon", options: { alt: "App logo", class: "is-hidden-desktop" }) %>
|
|
44
|
+
<%= customization_instance_logo_tag(logo: "app-logo", options: { alt: "App logo", class: "is-hidden-touch" }) %>
|
|
45
|
+
</template>
|
|
42
46
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class="dropdown-
|
|
47
|
-
<
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
<div class="dropdown-
|
|
53
|
-
|
|
54
|
-
<%
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
47
|
+
<template>
|
|
48
|
+
<%# language selector %>
|
|
49
|
+
<% if I18n.available_locales.length > 1 %>
|
|
50
|
+
<div class="dropdown is-hoverable header-language-selector">
|
|
51
|
+
<div class="dropdown-trigger">
|
|
52
|
+
<span class="icon has-text-link">
|
|
53
|
+
<%= lesli_svg("locale-#{locale}") %>
|
|
54
|
+
</span>
|
|
55
|
+
</div>
|
|
56
|
+
<div class="dropdown-menu" id="dropdown-menu-locale" role="menu">
|
|
57
|
+
<div class="dropdown-content">
|
|
58
|
+
<% I18n.available_locales.each do |locale| %>
|
|
59
|
+
<% next if locale == I18n.locale %>
|
|
60
|
+
<%= link_to language_url(locale), { :class => "dropdown-item" } do %>
|
|
61
|
+
<span class="icon has-text-grey-light">
|
|
62
|
+
<%= lesli_svg("locale-#{locale}") %>
|
|
63
|
+
</span>
|
|
64
|
+
<span><%= language_name(locale) %></span>
|
|
65
|
+
<% end %>
|
|
60
66
|
<% end %>
|
|
61
|
-
|
|
67
|
+
</div>
|
|
62
68
|
</div>
|
|
63
69
|
</div>
|
|
64
|
-
|
|
65
|
-
|
|
70
|
+
<% end %>
|
|
71
|
+
</template>
|
|
66
72
|
</lesli-application-header>
|