lesli 5.0.9 → 5.0.11
Sign up to get free protection for your applications and to get access to all the features.
- 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/assets/stylesheets/lesli/users/sessions.css +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/devise/sessions/new.html.erb +3 -0
- data/app/views/devise/shared/_demo.html.erb +7 -0
- 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 +9 -4
- data/db/seed/development/users.rb +2 -2
- data/db/seed/production/accounts.rb +47 -0
- data/db/seed/production/users.rb +83 -0
- data/db/seed/production.rb +6 -7
- data/db/seed/tools.rb +0 -1
- data/db/seeds.rb +5 -10
- data/lib/lesli/version.rb +2 -2
- data/lib/scss/pages/devise.scss +8 -0
- data/lib/tasks/lesli/db.rake +17 -26
- data/lib/vue/devise/sessions.js +1 -1
- data/lib/vue/layouts/application-header.vue +1 -1
- data/lib/vue/public.js +1 -1
- metadata +10 -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
|
@@ -36,6 +36,9 @@ Building a better future, one line of code at a time.
|
|
36
36
|
|
37
37
|
<%# Log in form %>
|
38
38
|
<form @submit="postLogin" method="post">
|
39
|
+
<% if Lesli.config.demo %>
|
40
|
+
<%= render("devise/shared/demo") %>
|
41
|
+
<% end %>
|
39
42
|
<div class="field mb-4">
|
40
43
|
<label for="user_email" class="label">E-mail address</label>
|
41
44
|
<div class="control has-icons-left has-icons-right">
|
@@ -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>
|