lato_core 1.1.1 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +0 -12
- data/app/controllers/lato_core/api/v1/api_controller.rb +2 -3
- data/app/controllers/lato_core/application_controller.rb +1 -1
- data/app/controllers/lato_core/back/authentication_controller.rb +12 -11
- data/app/controllers/lato_core/back/back_controller.rb +13 -19
- data/app/controllers/lato_core/back/superusers_controller.rb +123 -148
- data/app/mailers/lato_core/application_mailer.rb +3 -4
- data/app/mailers/lato_core/superusers_mailer.rb +5 -7
- data/app/models/lato_core/superuser.rb +27 -19
- data/app/views/lato_core/back/authentication/login.html.erb +12 -9
- data/app/views/lato_core/back/authentication/password_edit.html.erb +9 -14
- data/app/views/lato_core/back/authentication/password_forget.html.erb +26 -27
- data/app/views/lato_core/back/back/home.html.erb +5 -5
- data/app/views/lato_core/back/superusers/edit.html.erb +12 -3
- data/app/views/lato_core/back/superusers/index.html.erb +23 -13
- data/app/views/lato_core/back/superusers/new.html.erb +12 -3
- data/app/views/lato_core/back/superusers/shared/_form.html.erb +3 -6
- data/config/config.yml +1 -1
- data/config/example.yml +3 -3
- data/config/initializers/init.rb +4 -5
- data/{test/dummy/log/test.log → config/initializers/lists.rb} +0 -0
- data/config/initializers/ram.rb +1 -37
- data/config/routes.rb +4 -5
- data/lib/lato_core.rb +2 -6
- data/lib/lato_core/engine.rb +6 -6
- data/lib/lato_core/interface.rb +12 -15
- data/lib/lato_core/interface/authentication.rb +19 -27
- data/lib/lato_core/interface/cache.rb +17 -23
- data/lib/lato_core/interface/communication.rb +68 -85
- data/lib/lato_core/interface/languages.rb +38 -47
- data/lib/lato_core/interface/navigation.rb +79 -93
- data/lib/lato_core/interface/session.rb +47 -61
- data/lib/lato_core/interface/superusers.rb +113 -122
- data/lib/tasks/lato_core_tasks.rake +2 -5
- metadata +4 -99
- data/test/controllers/lato_core/api/v1/api_controller_test.rb +0 -9
- data/test/controllers/lato_core/application_controller_test.rb +0 -9
- data/test/controllers/lato_core/back/authentication_controller_test.rb +0 -13
- data/test/controllers/lato_core/back/back_controller_test.rb +0 -9
- data/test/controllers/lato_core/back/session_controller_test.rb +0 -13
- data/test/controllers/lato_core/back/superusers_controller_test.rb +0 -13
- data/test/dummy/README.rdoc +0 -28
- data/test/dummy/Rakefile +0 -6
- data/test/dummy/app/assets/javascripts/application.js +0 -13
- data/test/dummy/app/assets/stylesheets/application.css +0 -15
- data/test/dummy/app/controllers/application_controller.rb +0 -5
- data/test/dummy/app/helpers/application_helper.rb +0 -2
- data/test/dummy/app/views/layouts/application.html.erb +0 -14
- data/test/dummy/bin/bundle +0 -3
- data/test/dummy/bin/rails +0 -4
- data/test/dummy/bin/rake +0 -4
- data/test/dummy/bin/setup +0 -29
- data/test/dummy/config.ru +0 -4
- data/test/dummy/config/application.rb +0 -25
- data/test/dummy/config/boot.rb +0 -5
- data/test/dummy/config/database.yml +0 -25
- data/test/dummy/config/environment.rb +0 -5
- data/test/dummy/config/environments/development.rb +0 -41
- data/test/dummy/config/environments/production.rb +0 -79
- data/test/dummy/config/environments/test.rb +0 -42
- data/test/dummy/config/initializers/assets.rb +0 -11
- data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/test/dummy/config/initializers/cookies_serializer.rb +0 -3
- data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
- data/test/dummy/config/initializers/inflections.rb +0 -16
- data/test/dummy/config/initializers/mime_types.rb +0 -4
- data/test/dummy/config/initializers/session_store.rb +0 -3
- data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/test/dummy/config/locales/en.yml +0 -23
- data/test/dummy/config/routes.rb +0 -4
- data/test/dummy/config/secrets.yml +0 -22
- data/test/dummy/public/404.html +0 -67
- data/test/dummy/public/422.html +0 -67
- data/test/dummy/public/500.html +0 -66
- data/test/dummy/public/favicon.ico +0 -0
- data/test/fixtures/lato_core/superusers.yml +0 -11
- data/test/integration/navigation_test.rb +0 -8
- data/test/lato_core_test.rb +0 -7
- data/test/mailers/lato_core/lato_core_mailer_test.rb +0 -9
- data/test/mailers/previews/lato_core/lato_core_mailer_preview.rb +0 -6
- data/test/models/lato_core/superuser_test.rb +0 -9
- data/test/test_helper.rb +0 -21
@@ -1,10 +1,9 @@
|
|
1
|
-
# Includo l'interfaccia di lato_core
|
2
|
-
include LatoCore::Interface
|
3
|
-
|
4
1
|
module LatoCore
|
5
|
-
#
|
2
|
+
# This class is the default class for mailers.
|
6
3
|
class ApplicationMailer < ActionMailer::Base
|
4
|
+
# set default email
|
7
5
|
default from: core_getApplicationServiceEmail
|
6
|
+
# set lato mailer layout
|
8
7
|
layout 'lato_core/mailers/layouts/mailer'
|
9
8
|
end
|
10
9
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
module LatoCore
|
2
|
-
#
|
2
|
+
# This class is used for superusers mail actions.
|
3
3
|
class SuperusersMailer < ApplicationMailer
|
4
4
|
|
5
|
-
#
|
6
|
-
# con il messaggio richiesto
|
5
|
+
# This function send a normal notification message to users.
|
7
6
|
def notify(user, title, message)
|
8
7
|
# imposto i dati come variabili di classe
|
9
8
|
@title = title
|
@@ -12,17 +11,16 @@ module LatoCore
|
|
12
11
|
subject = "#{CORE_LANG['mailers']['notify_subject']} #{core_getApplicationName}"
|
13
12
|
# invio l'email di notifica all'utente
|
14
13
|
mail(to: user.email, subject: subject,
|
15
|
-
|
14
|
+
template_path: 'lato_core/mailers/superusers')
|
16
15
|
end
|
17
16
|
|
18
|
-
#
|
19
|
-
# Invia all'utente l'email per il recupero password contenente il codice speciale
|
17
|
+
# This function send a recover password request to user.
|
20
18
|
def recover_password(email, code_url)
|
21
19
|
# identifico codice completo per l'utente
|
22
20
|
@recover_url = core_getApplicationURL + lato_core.password_edit_path(code_url)
|
23
21
|
# invio l'email all'utente
|
24
22
|
mail(to: email, subject: CORE_LANG['recover_password']['email_subject'],
|
25
|
-
|
23
|
+
template_path: 'lato_core/mailers/superusers')
|
26
24
|
end
|
27
25
|
|
28
26
|
end
|
@@ -1,41 +1,49 @@
|
|
1
1
|
module LatoCore
|
2
|
-
#
|
2
|
+
# This class is the model for superusers.
|
3
3
|
class Superuser < ActiveRecord::Base
|
4
4
|
|
5
|
-
#
|
5
|
+
# Validations
|
6
|
+
############################################################################
|
7
|
+
|
6
8
|
validates :name, presence: true, length: { maximum: 50 }
|
7
9
|
|
8
|
-
validates :username, presence: true,
|
9
|
-
|
10
|
-
uniqueness: { case_sensitive: false }
|
10
|
+
validates :username, presence: true, length: { maximum: 50 },
|
11
|
+
uniqueness: { case_sensitive: false }
|
11
12
|
|
12
|
-
validates :email, presence: true,
|
13
|
-
|
14
|
-
|
15
|
-
uniqueness: { case_sensitive: false }
|
13
|
+
validates :email, presence: true, length: { maximum: 255 },
|
14
|
+
format: { with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i },
|
15
|
+
uniqueness: { case_sensitive: false }
|
16
16
|
|
17
|
-
validates :permission, presence: true,
|
18
|
-
length: { minimum: 1, maximum: 10 }
|
17
|
+
validates :permission, presence: true, length: { minimum: 1, maximum: 10 }
|
19
18
|
|
20
|
-
validates :password, presence: true,
|
21
|
-
length: { minimum: 6, maximum: 50 },
|
22
|
-
on: :create
|
19
|
+
validates :password, presence: true, length: { minimum: 6, maximum: 50 }, on: :create
|
23
20
|
|
24
21
|
has_secure_password
|
25
22
|
|
26
|
-
#
|
27
|
-
|
23
|
+
# Before db update
|
24
|
+
############################################################################
|
25
|
+
|
26
|
+
before_create do
|
28
27
|
username.downcase!
|
29
28
|
email.downcase!
|
30
29
|
|
31
30
|
set_admin_permission
|
32
31
|
end
|
33
32
|
|
34
|
-
|
35
|
-
|
33
|
+
before_update do
|
34
|
+
username.downcase!
|
35
|
+
email.downcase!
|
36
|
+
|
37
|
+
set_admin_permission
|
38
|
+
end
|
39
|
+
|
40
|
+
# Private functions
|
41
|
+
############################################################################
|
42
|
+
|
43
|
+
# This function set permission to 10 for first superuser.
|
36
44
|
private def set_admin_permission
|
37
45
|
first_user = LatoCore::Superuser.first
|
38
|
-
self.permission = 10 if first_user && id === first_user.id
|
46
|
+
self.permission = 10 if first_user && self.id === first_user.id
|
39
47
|
end
|
40
48
|
|
41
49
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
|
2
2
|
<div class="main-content login">
|
3
|
-
|
3
|
+
|
4
|
+
<!-- Login flash messages -->
|
4
5
|
<%= render 'lato_view/layout/flash' %>
|
5
6
|
|
6
7
|
<ul class="bg-bubbles">
|
@@ -16,27 +17,29 @@
|
|
16
17
|
<li></li>
|
17
18
|
</ul>
|
18
19
|
|
19
|
-
<!--
|
20
|
+
<!-- Login block -->
|
20
21
|
<div class="content-login">
|
22
|
+
|
21
23
|
<% if(login_logo = view_getLoginLogo) %>
|
22
24
|
<div class="login-logo"><%= image_tag login_logo %></div>
|
23
25
|
<% end %>
|
26
|
+
|
24
27
|
<%= form_tag(lato_core.exec_login_path, method: "post", class: 'lato-form') do %>
|
25
|
-
<%=raw view(:input).new(type: 'text',
|
26
|
-
name: 'username',
|
27
|
-
label: CORE_LANG['vocabolary']['username']) %>
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
<%=raw view(:input, :text).new(name: 'username',
|
30
|
+
label: CORE_LANG['vocabolary']['username']) %>
|
31
|
+
|
32
|
+
<%=raw view(:input, :password).new(name: 'password',
|
33
|
+
label: CORE_LANG['vocabolary']['password']) %>
|
32
34
|
|
33
35
|
<%= submit_tag("Login", class: 'lato-button') %>
|
34
36
|
|
35
37
|
<% if core_getRecoveryPasswordPermission %>
|
36
38
|
<%= link_to CORE_LANG['vocabolary']['password_forget'], lato_core.password_forget_path, class: 'link-password-forget' %>
|
37
39
|
<% end %>
|
38
|
-
|
40
|
+
|
39
41
|
<% end %>
|
42
|
+
|
40
43
|
</div>
|
41
44
|
|
42
45
|
</div>
|
@@ -1,7 +1,6 @@
|
|
1
|
-
<% block = view(:block).new(width: 'large-4', custom_class: 'flying-block') %>
|
2
|
-
|
3
1
|
<div class="main-content login">
|
4
|
-
|
2
|
+
|
3
|
+
<!-- Login flash messages -->
|
5
4
|
<%= render 'lato_view/layout/flash' %>
|
6
5
|
|
7
6
|
<ul class="bg-bubbles">
|
@@ -17,25 +16,20 @@
|
|
17
16
|
<li></li>
|
18
17
|
</ul>
|
19
18
|
|
20
|
-
<!--
|
19
|
+
<!-- Login block -->
|
21
20
|
<div class="content-login">
|
21
|
+
|
22
22
|
<p class="recover-guide"><%= CORE_LANG['recover_password']['recover_guide_psw'] %></p>
|
23
23
|
|
24
24
|
<%= form_tag(lato_core.password_update_path, method: "post", class: 'lato-form') do %>
|
25
25
|
|
26
|
-
<%=raw view(:input).new(
|
27
|
-
|
28
|
-
name: 'password',
|
29
|
-
label: CORE_LANG['vocabolary']['password'],
|
30
|
-
width: 'large',
|
26
|
+
<%=raw view(:input, :password).new(value: '', name: 'password',
|
27
|
+
label: CORE_LANG['vocabolary']['password'], width: 'large',
|
31
28
|
required: true) %>
|
32
29
|
|
33
|
-
<%=raw view(:input).new(
|
34
|
-
value: '',
|
35
|
-
name: 'password_confirmation',
|
30
|
+
<%=raw view(:input, :password).new(value: '', name: 'password_confirmation',
|
36
31
|
label: CORE_LANG['vocabolary']['password_confirmation'],
|
37
|
-
width: 'large',
|
38
|
-
custom_class: 'confirm-password',
|
32
|
+
width: 'large', custom_class: 'confirm-password',
|
39
33
|
required: true) %>
|
40
34
|
|
41
35
|
|
@@ -45,6 +39,7 @@
|
|
45
39
|
<%= submit_tag(CORE_LANG['vocabolary']['send'], class: 'lato-button') %>
|
46
40
|
|
47
41
|
<% end %>
|
42
|
+
|
48
43
|
</div>
|
49
44
|
|
50
45
|
</div>
|
@@ -1,37 +1,36 @@
|
|
1
|
-
|
1
|
+
<div class="main-content login">
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
<%= render 'lato_view/layout/flash' %>
|
3
|
+
<!-- Login flash messages -->
|
4
|
+
<%= render 'lato_view/layout/flash' %>
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
6
|
+
<ul class="bg-bubbles">
|
7
|
+
<li></li>
|
8
|
+
<li></li>
|
9
|
+
<li></li>
|
10
|
+
<li></li>
|
11
|
+
<li></li>
|
12
|
+
<li></li>
|
13
|
+
<li></li>
|
14
|
+
<li></li>
|
15
|
+
<li></li>
|
16
|
+
<li></li>
|
17
|
+
</ul>
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
<p class="recover-guide"><%= CORE_LANG['recover_password']['recover_guide'] %></p>
|
19
|
+
<!-- Login block -->
|
20
|
+
<div class="content-login">
|
23
21
|
|
24
|
-
|
22
|
+
<p class="recover-guide"><%= CORE_LANG['recover_password']['recover_guide'] %></p>
|
25
23
|
|
26
|
-
|
27
|
-
name: 'email',
|
28
|
-
label: CORE_LANG['vocabolary']['email']) %>
|
24
|
+
<%= form_tag(lato_core.password_recover_path, method: "post", class: 'lato-form') do %>
|
29
25
|
|
30
|
-
|
26
|
+
<%=raw view(:input, :email).new(name: 'email', label: CORE_LANG['vocabolary']['email']) %>
|
31
27
|
|
32
|
-
|
28
|
+
<%= submit_tag(CORE_LANG['vocabolary']['send'], class: 'lato-button') %>
|
33
29
|
|
34
|
-
|
35
|
-
|
30
|
+
<%= link_to CORE_LANG['vocabolary']['login'], lato_core.login_path, class: 'link-back-login' %>
|
31
|
+
|
32
|
+
<% end %>
|
36
33
|
|
37
34
|
</div>
|
35
|
+
|
36
|
+
</div>
|
@@ -1,17 +1,17 @@
|
|
1
1
|
<%
|
2
2
|
|
3
|
-
#
|
4
|
-
block = view(:block).new()
|
3
|
+
# set default block
|
4
|
+
block = view(:layout, :block).new()
|
5
5
|
|
6
|
-
#
|
7
|
-
actionbar = view(:actionbar).new(title: CORE_LANG['vocabolary']['dashboard'])
|
6
|
+
# set actionbar
|
7
|
+
actionbar = view(:layout, :actionbar).new(title: CORE_LANG['vocabolary']['dashboard'])
|
8
8
|
|
9
9
|
%>
|
10
10
|
|
11
11
|
<%=raw actionbar %>
|
12
12
|
|
13
13
|
<div class="content-row">
|
14
|
-
<%=raw block.open(width: 'medium-12 large-
|
14
|
+
<%=raw block.open(width: 'medium-12 large-12') %>
|
15
15
|
|
16
16
|
<p><b><%= CORE_LANG['welcome'] %></b></p>
|
17
17
|
<p><%= CORE_LANG['dashboard'] %></p>
|
@@ -1,7 +1,16 @@
|
|
1
|
-
<%
|
1
|
+
<%
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
block = view(:layout, :block).new
|
4
|
+
|
5
|
+
back_button = view(:component, :button).new(title: 'Back', url: lato_core.superusers_path,
|
6
|
+
size: 'small')
|
7
|
+
|
8
|
+
actionbar = view(:layout, :actionbar).new(title: "#{CORE_LANG['vocabolary']['edit']} #{@superuser.username}",
|
9
|
+
widgets: [{component: back_button, align: 'right'}])
|
10
|
+
|
11
|
+
%>
|
12
|
+
|
13
|
+
<%= raw actionbar %>
|
5
14
|
|
6
15
|
<div class="content-row">
|
7
16
|
<%= raw block.open %>
|
@@ -1,23 +1,33 @@
|
|
1
|
-
<%
|
1
|
+
<%
|
2
2
|
|
3
|
-
|
4
|
-
url: lato_core.superusers_path,
|
5
|
-
filter: :username_cont,
|
6
|
-
style: :rounded) %>
|
3
|
+
block = view(:layout, :block).new
|
7
4
|
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
searchbar = view(:component, :searchbar).new(elements: @search_superusers,
|
6
|
+
url: lato_core.superusers_path, filter: :username_cont,
|
7
|
+
style: :rounded)
|
8
|
+
|
9
|
+
new_button = view(:component, :button).new(title: CORE_LANG['vocabolary']['new'],
|
10
|
+
url: lato_core.new_superuser_path, size: :small)
|
11
|
+
|
12
|
+
actionbar = view(:layout, :actionbar).new(title: CORE_LANG['vocabolary']['users'],
|
13
|
+
widgets: [
|
14
|
+
{component: searchbar, align: :right},
|
15
|
+
{component: new_button, align: :right}
|
16
|
+
])
|
17
|
+
|
18
|
+
index = view(:layout, :index).new(head: [CORE_LANG['vocabolary']['username'], CORE_LANG['vocabolary']['email']],
|
19
|
+
elements: @superusers, attributes: ['username', 'email'], link: lato_core.superusers_path,
|
20
|
+
show_link: false)
|
21
|
+
|
22
|
+
%>
|
23
|
+
|
24
|
+
<%=raw actionbar %>
|
11
25
|
|
12
26
|
<div class="content-row">
|
13
27
|
<%=raw block.open %>
|
14
28
|
|
15
29
|
|
16
|
-
<%=raw
|
17
|
-
elements: @superusers,
|
18
|
-
attributes: ['username', 'email'],
|
19
|
-
link: lato_core.superusers_path,
|
20
|
-
show_link: false) %>
|
30
|
+
<%=raw index %>
|
21
31
|
|
22
32
|
<%= will_paginate @superusers %>
|
23
33
|
|
@@ -1,7 +1,16 @@
|
|
1
|
-
<%
|
1
|
+
<%
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
block = view(:layout, :block).new
|
4
|
+
|
5
|
+
back_button = view(:component, :button).new(title: 'Back', url: lato_core.superusers_path,
|
6
|
+
size: 'small')
|
7
|
+
|
8
|
+
actionbar = view(:layout, :actionbar).new(title: CORE_LANG['vocabolary']['new'],
|
9
|
+
widgets: [{component: back_button, align: 'right'}])
|
10
|
+
|
11
|
+
%>
|
12
|
+
|
13
|
+
<%=raw actionbar %>
|
5
14
|
|
6
15
|
<div class="content-row">
|
7
16
|
<%=raw block.open %>
|
@@ -6,12 +6,9 @@
|
|
6
6
|
|
7
7
|
<div class="form-group">
|
8
8
|
|
9
|
-
<%=raw view(:input).new(
|
10
|
-
|
11
|
-
|
12
|
-
label: CORE_LANG['vocabolary']['name'],
|
13
|
-
width: 'half',
|
14
|
-
required: true) %>
|
9
|
+
<%=raw view(:input, :text).new(value: @superuser.name, name: 'superuser[name]',
|
10
|
+
label: CORE_LANG['vocabolary']['name'],
|
11
|
+
width: 'half', required: true) %>
|
15
12
|
|
16
13
|
<%=raw view(:input).new(type: 'text',
|
17
14
|
value: @superuser.username,
|
data/config/config.yml
CHANGED
data/config/example.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Basic informations
|
2
|
-
|
2
|
+
################################################################################
|
3
3
|
# Please, set a correct value for these informations
|
4
4
|
|
5
5
|
# Set the application name.
|
@@ -22,7 +22,7 @@ root_url: http://localhost:3000
|
|
22
22
|
service_email: service@lato.com
|
23
23
|
|
24
24
|
# Usage informations
|
25
|
-
|
25
|
+
################################################################################
|
26
26
|
|
27
27
|
# Add custom voices to the sidebar.
|
28
28
|
# Custom voices are sections on sidebar used for the navigation inside the Lato panel.
|
@@ -41,7 +41,7 @@ service_email: service@lato.com
|
|
41
41
|
# login_home: "/example"
|
42
42
|
|
43
43
|
# Users settings
|
44
|
-
|
44
|
+
################################################################################
|
45
45
|
|
46
46
|
# Hide users with permission value to users with others permission value
|
47
47
|
# You can hide users on users section. For example '1 to 2' means that users with
|
data/config/initializers/init.rb
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
include LatoCore::Interface
|
2
2
|
|
3
|
-
#
|
3
|
+
# Set default languages
|
4
4
|
|
5
5
|
CORE_LANG = core_loadModuleLanguages('lato_core')
|
6
6
|
|
7
|
-
#
|
7
|
+
# Create first user if not exist
|
8
8
|
|
9
9
|
if ActiveRecord::Base.connection.table_exists? 'lato_core_superusers'
|
10
10
|
|
11
11
|
LatoCore::Superuser.create(name: 'Admin', username: 'lato',
|
12
|
-
|
13
|
-
|
14
|
-
password_confirmation: 'password')
|
12
|
+
email: 'lato@mail.com', permission: 10, password: 'password',
|
13
|
+
password_confirmation: 'password')
|
15
14
|
|
16
15
|
end
|