ditty 0.8.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.pryrc +2 -0
- data/.rubocop.yml +1 -1
- data/.travis.yml +5 -4
- data/CNAME +1 -0
- data/Dockerfile +18 -0
- data/Gemfile.ci +0 -2
- data/Rakefile +2 -2
- data/_config.yml +1 -0
- data/config.ru +4 -4
- data/ditty.gemspec +9 -3
- data/docs/CNAME +1 -0
- data/docs/_config.yml +1 -0
- data/docs/index.md +34 -0
- data/exe/ditty +2 -0
- data/lib/ditty.rb +4 -2
- data/lib/ditty/cli.rb +28 -4
- data/lib/ditty/components/{app.rb → ditty.rb} +19 -14
- data/lib/ditty/controllers/{application.rb → application_controller.rb} +58 -29
- data/lib/ditty/controllers/{audit_logs.rb → audit_logs_controller.rb} +2 -2
- data/lib/ditty/controllers/{auth.rb → auth_controller.rb} +17 -16
- data/lib/ditty/controllers/{component.rb → component_controller.rb} +19 -18
- data/lib/ditty/controllers/{main.rb → main_controller.rb} +6 -2
- data/lib/ditty/controllers/roles_controller.rb +23 -0
- data/lib/ditty/controllers/{user_login_traits.rb → user_login_traits_controller.rb} +4 -3
- data/lib/ditty/controllers/{users.rb → users_controller.rb} +11 -10
- data/lib/ditty/db.rb +4 -3
- data/lib/ditty/emails/base.rb +5 -2
- data/lib/ditty/generators/crud_generator.rb +104 -0
- data/lib/ditty/generators/migration_generator.rb +26 -0
- data/lib/ditty/generators/project_generator.rb +51 -0
- data/lib/ditty/helpers/component.rb +2 -1
- data/lib/ditty/helpers/pundit.rb +20 -4
- data/lib/ditty/helpers/response.rb +20 -13
- data/lib/ditty/helpers/views.rb +7 -3
- data/lib/ditty/listener.rb +5 -3
- data/lib/ditty/memcached.rb +8 -0
- data/lib/ditty/middleware/accept_extension.rb +2 -2
- data/lib/ditty/middleware/error_catchall.rb +2 -2
- data/lib/ditty/models/base.rb +4 -0
- data/lib/ditty/models/role.rb +1 -0
- data/lib/ditty/models/user.rb +14 -1
- data/lib/ditty/policies/role_policy.rb +1 -1
- data/lib/ditty/policies/user_login_trait_policy.rb +1 -1
- data/lib/ditty/services/authentication.rb +11 -10
- data/lib/ditty/services/email.rb +8 -4
- data/lib/ditty/services/logger.rb +1 -1
- data/lib/ditty/tasks/ditty.rake +17 -0
- data/lib/ditty/tasks/omniauth-ldap.rake +2 -2
- data/lib/ditty/templates/.gitignore +5 -0
- data/lib/ditty/templates/.rspec +2 -0
- data/lib/ditty/templates/.rubocop.yml +7 -0
- data/lib/ditty/templates/Rakefile +12 -0
- data/lib/ditty/templates/application.rb +12 -0
- data/lib/ditty/templates/config.ru +37 -0
- data/lib/ditty/templates/controller.rb.erb +58 -0
- data/lib/ditty/templates/env.example +4 -0
- data/lib/ditty/templates/lib/project.rb.erb +5 -0
- data/lib/ditty/templates/migration.rb.erb +7 -0
- data/lib/ditty/templates/model.rb.erb +26 -0
- data/lib/ditty/templates/pids/.empty_directory +0 -0
- data/lib/ditty/templates/policy.rb.erb +48 -0
- data/lib/ditty/templates/public/css/sb-admin-2.min.css +10 -0
- data/lib/ditty/templates/public/js/sb-admin-2.min.js +7 -0
- data/lib/ditty/templates/settings.yml.erb +18 -0
- data/lib/ditty/templates/sidekiq.rb +18 -0
- data/lib/ditty/templates/sidekiq.yml +9 -0
- data/lib/ditty/templates/spec_helper.rb +43 -0
- data/lib/ditty/templates/type.rb.erb +21 -0
- data/lib/ditty/templates/views/display.haml.tt +20 -0
- data/lib/ditty/templates/views/edit.haml.tt +10 -0
- data/lib/ditty/templates/views/form.haml.tt +11 -0
- data/lib/ditty/templates/views/index.haml.tt +29 -0
- data/lib/ditty/templates/views/new.haml.tt +10 -0
- data/lib/ditty/version.rb +1 -1
- data/lib/rubocop/cop/ditty/call_services_directly.rb +2 -2
- data/migrate/20181209_add_user_login_traits.rb +4 -4
- data/migrate/20190220_add_parent_id_to_roles.rb +9 -0
- data/public/css/styles.css +13 -0
- data/public/js/scripts.js +1 -0
- data/views/404.haml +2 -4
- data/views/audit_logs/index.haml +32 -34
- data/views/auth/forgot_password.haml +27 -16
- data/views/auth/identity.haml +14 -13
- data/views/auth/ldap.haml +2 -2
- data/views/auth/login.haml +22 -17
- data/views/auth/register.haml +19 -18
- data/views/auth/register_identity.haml +27 -12
- data/views/auth/reset_password.haml +2 -2
- data/views/blank.haml +42 -0
- data/views/index.haml +1 -1
- data/views/layout.haml +37 -30
- data/views/partials/content_tag.haml +0 -0
- data/views/partials/delete_form.haml +1 -1
- data/views/partials/filter_control.haml +1 -1
- data/views/partials/footer.haml +5 -5
- data/views/partials/form_control.haml +19 -12
- data/views/partials/navitems.haml +44 -0
- data/views/partials/notifications.haml +12 -8
- data/views/partials/pager.haml +17 -17
- data/views/partials/search.haml +6 -7
- data/views/partials/sidebar.haml +15 -37
- data/views/partials/topbar.haml +68 -0
- data/views/roles/display.haml +27 -6
- data/views/roles/edit.haml +3 -3
- data/views/roles/form.haml +1 -0
- data/views/roles/index.haml +23 -16
- data/views/roles/new.haml +2 -2
- data/views/user_login_traits/display.haml +4 -4
- data/views/user_login_traits/edit.haml +3 -3
- data/views/user_login_traits/index.haml +4 -4
- data/views/user_login_traits/new.haml +2 -2
- data/views/users/display.haml +11 -12
- data/views/users/edit.haml +3 -3
- data/views/users/form.haml +0 -0
- data/views/users/index.haml +31 -24
- data/views/users/login_traits.haml +6 -8
- data/views/users/new.haml +2 -2
- data/views/users/profile.haml +13 -13
- metadata +143 -15
- data/lib/ditty/controllers/roles.rb +0 -13
- data/views/partials/navbar.haml +0 -22
data/views/roles/display.haml
CHANGED
@@ -1,17 +1,38 @@
|
|
1
|
-
.row
|
1
|
+
.row.mb-4
|
2
2
|
.col-md-2
|
3
3
|
.col-md-8
|
4
|
-
.
|
5
|
-
.
|
4
|
+
.card.card-default
|
5
|
+
.card-body
|
6
6
|
%p.description
|
7
7
|
%label Name:
|
8
|
-
= entity.name
|
8
|
+
= entity.name.titlecase
|
9
|
+
%p.description
|
10
|
+
%label Parent:
|
11
|
+
%a{ href: "#{base_path}/#{entity.parent_id}" }= entity.parent&.name&.titlecase || '(None)'
|
9
12
|
|
10
13
|
.row
|
11
14
|
.col-md-6
|
12
|
-
%a.btn.btn-
|
15
|
+
%a.btn.btn-secondary{ href: "#{base_path}/#{entity.display_id}/edit" } Edit
|
13
16
|
.col-md-6.text-right
|
14
17
|
- if policy(entity).delete?
|
15
|
-
= delete_form_tag("#{base_path}/#{entity.
|
18
|
+
= delete_form_tag("#{base_path}/#{entity.display_id}") do
|
16
19
|
%button.btn.btn-warning{ type: 'submit' } Delete
|
17
20
|
.col-md-2
|
21
|
+
|
22
|
+
.row
|
23
|
+
.col-md-2
|
24
|
+
.col-md-8
|
25
|
+
.card.card-default
|
26
|
+
.card-body
|
27
|
+
%h4.card-title Included Roles
|
28
|
+
%table.table.table-striped
|
29
|
+
%tbody
|
30
|
+
- if entity.descendants.count > 0
|
31
|
+
- entity.descendants.each do |role|
|
32
|
+
%tr
|
33
|
+
%td
|
34
|
+
%a.btn-block{ href: "#{settings.map_path}/role/#{role.id}" }
|
35
|
+
= role.name.titlecase
|
36
|
+
- else
|
37
|
+
%tr
|
38
|
+
%td.text-center No records
|
data/views/roles/edit.haml
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
.row
|
2
2
|
.col-md-2
|
3
3
|
.col-md-8
|
4
|
-
.
|
5
|
-
.
|
6
|
-
= edit_form_tag "#{base_path}/#{entity.
|
4
|
+
.card
|
5
|
+
.card-body
|
6
|
+
= edit_form_tag "#{base_path}/#{entity.display_id}" do
|
7
7
|
= haml :'roles/form', locals: { entity: entity }
|
8
8
|
%button.btn.btn-primary{ type: 'submit' }
|
9
9
|
Update Role
|
data/views/roles/form.haml
CHANGED
data/views/roles/index.haml
CHANGED
@@ -1,20 +1,27 @@
|
|
1
1
|
.row
|
2
2
|
.col-md-12
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
%
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
%tr
|
14
|
-
%td
|
15
|
-
%a{ href: "#{base_path}/#{entity.id}" }= entity.name
|
16
|
-
- else
|
3
|
+
= haml :'partials/search'
|
4
|
+
%table.table.table-striped.table-bordered.table-hover
|
5
|
+
%thead.thead-dark
|
6
|
+
%tr
|
7
|
+
%th Name
|
8
|
+
%th Parent
|
9
|
+
%th
|
10
|
+
%tbody
|
11
|
+
- if list.count > 0
|
12
|
+
- list.all.each do |entity|
|
17
13
|
%tr
|
18
|
-
%td
|
14
|
+
%td
|
15
|
+
%a{ href: "#{base_path}/#{entity.display_id}" }= entity.name
|
16
|
+
%td
|
17
|
+
%a{ href: "#{base_path}/#{entity.parent_id}" }= entity.parent&.name || '(None)'
|
18
|
+
%td
|
19
|
+
- if policy(entity).update?
|
20
|
+
%a{ href: "#{base_path}/#{entity.display_id}/edit", title: 'Edit' }
|
21
|
+
%i.fa.fa-edit
|
22
|
+
- else
|
23
|
+
%tr
|
24
|
+
%td.text-center{ colspan: 3 } No Roles
|
19
25
|
|
20
|
-
|
26
|
+
- if list.count > 0
|
27
|
+
=pagination(list, base_path)
|
data/views/roles/new.haml
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
.row
|
2
2
|
.col-md-2
|
3
3
|
.col-md-8
|
4
|
-
.
|
5
|
-
.
|
4
|
+
.card.card-default
|
5
|
+
.card-body
|
6
6
|
%p.description
|
7
7
|
%label User:
|
8
8
|
= entity.user&.email || 'Unknown'
|
@@ -24,9 +24,9 @@
|
|
24
24
|
|
25
25
|
.row
|
26
26
|
.col-md-6
|
27
|
-
%a.btn.btn-
|
27
|
+
%a.btn.btn-secondary{ href: "#{base_path}/#{entity.display_id}/edit" } Edit
|
28
28
|
.col-md-6.text-right
|
29
29
|
- if policy(entity).delete?
|
30
|
-
= delete_form_tag("#{base_path}/#{entity.
|
30
|
+
= delete_form_tag("#{base_path}/#{entity.display_id}") do
|
31
31
|
%button.btn.btn-warning{ type: 'submit' } Delete
|
32
32
|
.col-md-2
|
@@ -1,9 +1,9 @@
|
|
1
1
|
.row
|
2
2
|
.col-md-2
|
3
3
|
.col-md-8
|
4
|
-
.
|
5
|
-
.
|
6
|
-
= edit_form_tag "#{base_path}/#{entity.
|
4
|
+
.card.card-default
|
5
|
+
.card-body
|
6
|
+
= edit_form_tag "#{base_path}/#{entity.display_id}" do
|
7
7
|
= haml :'user_login_traits/form', locals: { entity: entity }
|
8
8
|
%button.btn.btn-primary{ type: 'submit' }
|
9
9
|
Update Login Trait
|
@@ -1,10 +1,10 @@
|
|
1
1
|
.row
|
2
2
|
.col-md-12
|
3
|
-
.
|
4
|
-
.
|
3
|
+
.card.card-default
|
4
|
+
.card-body
|
5
5
|
= haml :'partials/search'
|
6
6
|
%table.table.table-striped
|
7
|
-
%thead
|
7
|
+
%thead.thead-dark
|
8
8
|
%tr
|
9
9
|
%th User
|
10
10
|
%th IP Address
|
@@ -18,7 +18,7 @@
|
|
18
18
|
%tr
|
19
19
|
%td= entity.user&.email || 'Unknown'
|
20
20
|
%td
|
21
|
-
%a{ href: "#{base_path}/#{entity.
|
21
|
+
%a{ href: "#{base_path}/#{entity.display_id}" }= entity.ip_address || 'Unknown'
|
22
22
|
%td= entity.device || 'Unknown'
|
23
23
|
%td= entity.platform || 'Unknown'
|
24
24
|
%td= entity.browser || 'Unknown'
|
data/views/users/display.haml
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
.row
|
1
|
+
.row.mb-4
|
2
2
|
.col-md-2
|
3
3
|
.col-md-8
|
4
|
-
.
|
5
|
-
.
|
4
|
+
.card.card-default
|
5
|
+
.card-body
|
6
6
|
.author
|
7
|
-
%img.
|
7
|
+
%img.float-right.img-thumbnail{ src: entity.gravatar }
|
8
8
|
%h4= entity.email
|
9
9
|
|
10
10
|
%hr
|
@@ -24,22 +24,21 @@
|
|
24
24
|
.row
|
25
25
|
.col-md-6
|
26
26
|
- if policy(entity).update?
|
27
|
-
%a.btn.btn-
|
27
|
+
%a.btn.btn-secondary{ href: "#{base_path}/#{entity.display_id}/edit" } Edit
|
28
28
|
.col-md-6.text-right
|
29
29
|
- if policy(entity).delete?
|
30
|
-
= delete_form_tag("#{base_path}/#{entity.
|
30
|
+
= delete_form_tag("#{base_path}/#{entity.display_id}") do
|
31
31
|
%button.btn.btn-warning{ type: 'submit' } Delete
|
32
32
|
.col-md-2
|
33
33
|
|
34
34
|
- if entity.identity.first
|
35
|
-
.row
|
35
|
+
.row.mb-4
|
36
36
|
.col-md-2
|
37
37
|
.col-md-8
|
38
|
-
.
|
39
|
-
.
|
40
|
-
%h4 Change Password
|
41
|
-
|
42
|
-
= edit_form_tag("#{base_path}/#{entity.id}/identity") do
|
38
|
+
.card.card-default
|
39
|
+
.card-body
|
40
|
+
%h4.card-title Change Password
|
41
|
+
= edit_form_tag("#{base_path}/#{entity.display_id}/identity") do
|
43
42
|
= form_control(:password, entity.identity.first, type: 'password', placeholder: 'Your password', group: 'identity')
|
44
43
|
= form_control(:password_confirmation, entity.identity.first, type: 'password', label: 'Confirm Password', placeholder: 'Confirm your password', group: 'identity')
|
45
44
|
%button.btn.btn-primary{ type: 'submit' }
|
data/views/users/edit.haml
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
.row
|
2
2
|
.col-md-2
|
3
3
|
.col-md-8
|
4
|
-
.
|
5
|
-
.
|
6
|
-
= edit_form_tag "#{base_path}/#{entity.
|
4
|
+
.card.card-default
|
5
|
+
.card-body
|
6
|
+
= edit_form_tag "#{base_path}/#{entity.display_id}" do
|
7
7
|
= haml :'users/user', locals: { user: entity }
|
8
8
|
%button.btn.btn-primary{ type: 'submit' }
|
9
9
|
Update User
|
File without changes
|
data/views/users/index.haml
CHANGED
@@ -1,28 +1,35 @@
|
|
1
1
|
.row
|
2
2
|
.col-md-12
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
%
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
-
|
16
|
-
- list.all.each do |entity|
|
17
|
-
%tr
|
18
|
-
%td
|
19
|
-
%a{ href: "#{base_path}/#{entity.id}" }= entity.email
|
20
|
-
%td= entity.name
|
21
|
-
%td= entity.surname
|
22
|
-
%td= entity.roles_dataset.map(:name).map(&:titlecase).join(', ')
|
23
|
-
%td= entity.created_at.strftime('%Y-%m-%d')
|
24
|
-
- else
|
3
|
+
= haml :'partials/search'
|
4
|
+
%table.table.table-striped.table-bordered.table-hover
|
5
|
+
%thead.thead-dark
|
6
|
+
%tr
|
7
|
+
%th Email
|
8
|
+
%th Name
|
9
|
+
%th Surname
|
10
|
+
%th Roles
|
11
|
+
%th Signed Up
|
12
|
+
%th
|
13
|
+
%tbody
|
14
|
+
- if list.count > 0
|
15
|
+
- list.all.each do |entity|
|
25
16
|
%tr
|
26
|
-
%td
|
17
|
+
%td
|
18
|
+
- if policy(entity).read?
|
19
|
+
%a{ href: "#{base_path}/#{entity.display_id}" }= entity.email
|
20
|
+
- else
|
21
|
+
= entity.email
|
22
|
+
%td= entity.name
|
23
|
+
%td= entity.surname
|
24
|
+
%td= entity.all_roles.map(&:name).map(&:titlecase).join(', ')
|
25
|
+
%td= entity.created_at.strftime('%Y-%m-%d')
|
26
|
+
%td
|
27
|
+
- if policy(entity).update?
|
28
|
+
%a{ href: "#{base_path}/#{entity.display_id}/edit", title: 'Edit' }
|
29
|
+
%i.fa.fa-edit
|
30
|
+
- else
|
31
|
+
%tr
|
32
|
+
%td.text-center{ colspan: 6 } No records
|
27
33
|
|
28
|
-
|
34
|
+
- if list.count > 0
|
35
|
+
=pagination(list, base_path)
|
@@ -1,11 +1,10 @@
|
|
1
1
|
.row
|
2
|
-
.col-md-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
%thead
|
2
|
+
.col-md-12
|
3
|
+
.card.card-default
|
4
|
+
.card-body
|
5
|
+
%h4.card-title Logins
|
6
|
+
%table.table.table-striped
|
7
|
+
%thead.thead-dark
|
9
8
|
%tr
|
10
9
|
%th IP Address
|
11
10
|
%th Device
|
@@ -24,4 +23,3 @@
|
|
24
23
|
- else
|
25
24
|
%tr
|
26
25
|
%td.text-center{ colspan: 5 } No Records
|
27
|
-
.col-md-2
|
data/views/users/new.haml
CHANGED
data/views/users/profile.haml
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
.row
|
1
|
+
.row.mb-4
|
2
2
|
.col-md-2
|
3
3
|
.col-md-8
|
4
|
-
.
|
5
|
-
.
|
4
|
+
.card.card-default
|
5
|
+
.card-body
|
6
6
|
.author
|
7
|
-
%img.
|
7
|
+
%img.float-right.img-thumbnail{ src: entity.gravatar }
|
8
8
|
%h4= entity.email
|
9
9
|
|
10
10
|
%hr
|
@@ -23,22 +23,22 @@
|
|
23
23
|
.row
|
24
24
|
.col-md-6
|
25
25
|
- if policy(entity).update?
|
26
|
-
%a.btn.btn-
|
26
|
+
%a.btn.btn-secondary{ href: "#{base_path}/#{entity.display_id}/edit" } Edit
|
27
27
|
.col-md-6.text-right
|
28
28
|
- if policy(entity).delete?
|
29
|
-
= delete_form_tag("#{base_path}/#{entity.
|
29
|
+
= delete_form_tag("#{base_path}/#{entity.display_id}") do
|
30
30
|
%button.btn.btn-warning{ type: 'submit' } Delete
|
31
31
|
.col-md-2
|
32
32
|
|
33
|
-
.row
|
33
|
+
.row.mb-4
|
34
34
|
.col-md-2
|
35
35
|
.col-md-8
|
36
|
-
.
|
37
|
-
.
|
38
|
-
%h4 Change Password
|
39
|
-
|
40
|
-
|
41
|
-
|
36
|
+
.card.card-default
|
37
|
+
.card-body
|
38
|
+
%h4.card-title Change Password
|
39
|
+
= edit_form_tag("#{base_path}/#{entity.display_id}/identity") do
|
40
|
+
- if current_user.super_admin? == false
|
41
|
+
= form_control(:old_password, identity, type: 'password', placeholder: 'Your current password', value: '')
|
42
42
|
= form_control(:password, identity, type: 'password', placeholder: 'Your new password')
|
43
43
|
= form_control(:password_confirmation, identity, type: 'password', label: 'Confirm Password', placeholder: 'Confirm your password')
|
44
44
|
%button.btn.btn-primary{ type: 'submit' }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ditty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jurgens du Toit
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,6 +94,76 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '3.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop-performance
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubocop-rspec
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rubocop-sequel
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rubocop-thread_safety
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
97
167
|
- !ruby/object:Gem::Dependency
|
98
168
|
name: timecop
|
99
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,20 +220,34 @@ dependencies:
|
|
150
220
|
- - "~>"
|
151
221
|
- !ruby/object:Gem::Version
|
152
222
|
version: '2.5'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: dotenv
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '2'
|
230
|
+
type: :runtime
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '2'
|
153
237
|
- !ruby/object:Gem::Dependency
|
154
238
|
name: haml
|
155
239
|
requirement: !ruby/object:Gem::Requirement
|
156
240
|
requirements:
|
157
241
|
- - "~>"
|
158
242
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
243
|
+
version: 5.1.2
|
160
244
|
type: :runtime
|
161
245
|
prerelease: false
|
162
246
|
version_requirements: !ruby/object:Gem::Requirement
|
163
247
|
requirements:
|
164
248
|
- - "~>"
|
165
249
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
250
|
+
version: 5.1.2
|
167
251
|
- !ruby/object:Gem::Dependency
|
168
252
|
name: logger
|
169
253
|
requirement: !ruby/object:Gem::Requirement
|
@@ -429,34 +513,44 @@ files:
|
|
429
513
|
- ".rspec"
|
430
514
|
- ".rubocop.yml"
|
431
515
|
- ".travis.yml"
|
516
|
+
- CNAME
|
432
517
|
- Contributors.md
|
518
|
+
- Dockerfile
|
433
519
|
- Gemfile.ci
|
434
520
|
- License.txt
|
435
521
|
- Rakefile
|
436
522
|
- Readme.md
|
523
|
+
- _config.yml
|
437
524
|
- config.ru
|
438
525
|
- ditty.gemspec
|
526
|
+
- docs/CNAME
|
527
|
+
- docs/_config.yml
|
528
|
+
- docs/index.md
|
439
529
|
- exe/ditty
|
440
530
|
- lib/ditty.rb
|
441
531
|
- lib/ditty/cli.rb
|
442
|
-
- lib/ditty/components/
|
443
|
-
- lib/ditty/controllers/
|
444
|
-
- lib/ditty/controllers/
|
445
|
-
- lib/ditty/controllers/
|
446
|
-
- lib/ditty/controllers/
|
447
|
-
- lib/ditty/controllers/
|
448
|
-
- lib/ditty/controllers/
|
449
|
-
- lib/ditty/controllers/
|
450
|
-
- lib/ditty/controllers/
|
532
|
+
- lib/ditty/components/ditty.rb
|
533
|
+
- lib/ditty/controllers/application_controller.rb
|
534
|
+
- lib/ditty/controllers/audit_logs_controller.rb
|
535
|
+
- lib/ditty/controllers/auth_controller.rb
|
536
|
+
- lib/ditty/controllers/component_controller.rb
|
537
|
+
- lib/ditty/controllers/main_controller.rb
|
538
|
+
- lib/ditty/controllers/roles_controller.rb
|
539
|
+
- lib/ditty/controllers/user_login_traits_controller.rb
|
540
|
+
- lib/ditty/controllers/users_controller.rb
|
451
541
|
- lib/ditty/db.rb
|
452
542
|
- lib/ditty/emails/base.rb
|
453
543
|
- lib/ditty/emails/forgot_password.rb
|
544
|
+
- lib/ditty/generators/crud_generator.rb
|
545
|
+
- lib/ditty/generators/migration_generator.rb
|
546
|
+
- lib/ditty/generators/project_generator.rb
|
454
547
|
- lib/ditty/helpers/authentication.rb
|
455
548
|
- lib/ditty/helpers/component.rb
|
456
549
|
- lib/ditty/helpers/pundit.rb
|
457
550
|
- lib/ditty/helpers/response.rb
|
458
551
|
- lib/ditty/helpers/views.rb
|
459
552
|
- lib/ditty/listener.rb
|
553
|
+
- lib/ditty/memcached.rb
|
460
554
|
- lib/ditty/middleware/accept_extension.rb
|
461
555
|
- lib/ditty/middleware/error_catchall.rb
|
462
556
|
- lib/ditty/models/audit_log.rb
|
@@ -480,6 +574,32 @@ files:
|
|
480
574
|
- lib/ditty/services/settings.rb
|
481
575
|
- lib/ditty/tasks/ditty.rake
|
482
576
|
- lib/ditty/tasks/omniauth-ldap.rake
|
577
|
+
- lib/ditty/templates/.gitignore
|
578
|
+
- lib/ditty/templates/.rspec
|
579
|
+
- lib/ditty/templates/.rubocop.yml
|
580
|
+
- lib/ditty/templates/Rakefile
|
581
|
+
- lib/ditty/templates/application.rb
|
582
|
+
- lib/ditty/templates/config.ru
|
583
|
+
- lib/ditty/templates/controller.rb.erb
|
584
|
+
- lib/ditty/templates/env.example
|
585
|
+
- lib/ditty/templates/lib/project.rb.erb
|
586
|
+
- lib/ditty/templates/logs/.empty_directory
|
587
|
+
- lib/ditty/templates/migration.rb.erb
|
588
|
+
- lib/ditty/templates/model.rb.erb
|
589
|
+
- lib/ditty/templates/pids/.empty_directory
|
590
|
+
- lib/ditty/templates/policy.rb.erb
|
591
|
+
- lib/ditty/templates/public/css/sb-admin-2.min.css
|
592
|
+
- lib/ditty/templates/public/js/sb-admin-2.min.js
|
593
|
+
- lib/ditty/templates/settings.yml.erb
|
594
|
+
- lib/ditty/templates/sidekiq.rb
|
595
|
+
- lib/ditty/templates/sidekiq.yml
|
596
|
+
- lib/ditty/templates/spec_helper.rb
|
597
|
+
- lib/ditty/templates/type.rb.erb
|
598
|
+
- lib/ditty/templates/views/display.haml.tt
|
599
|
+
- lib/ditty/templates/views/edit.haml.tt
|
600
|
+
- lib/ditty/templates/views/form.haml.tt
|
601
|
+
- lib/ditty/templates/views/index.haml.tt
|
602
|
+
- lib/ditty/templates/views/new.haml.tt
|
483
603
|
- lib/ditty/version.rb
|
484
604
|
- lib/rubocop/cop/ditty/call_services_directly.rb
|
485
605
|
- migrate/20170207_base_tables.rb
|
@@ -488,7 +608,9 @@ files:
|
|
488
608
|
- migrate/20180307_password_reset.rb
|
489
609
|
- migrate/20181209_add_user_login_traits.rb
|
490
610
|
- migrate/20181209_extend_audit_log.rb
|
611
|
+
- migrate/20190220_add_parent_id_to_roles.rb
|
491
612
|
- public/browserconfig.xml
|
613
|
+
- public/css/styles.css
|
492
614
|
- public/images/apple-icon.png
|
493
615
|
- public/images/favicon-16x16.png
|
494
616
|
- public/images/favicon-32x32.png
|
@@ -497,6 +619,7 @@ files:
|
|
497
619
|
- public/images/launcher-icon-4x.png
|
498
620
|
- public/images/mstile-150x150.png
|
499
621
|
- public/images/safari-pinned-tab.svg
|
622
|
+
- public/js/scripts.js
|
500
623
|
- public/manifest.json
|
501
624
|
- views/400.haml
|
502
625
|
- views/403.haml
|
@@ -509,6 +632,7 @@ files:
|
|
509
632
|
- views/auth/register.haml
|
510
633
|
- views/auth/register_identity.haml
|
511
634
|
- views/auth/reset_password.haml
|
635
|
+
- views/blank.haml
|
512
636
|
- views/emails/base.haml
|
513
637
|
- views/emails/forgot_password.haml
|
514
638
|
- views/emails/layouts/action.haml
|
@@ -519,16 +643,18 @@ files:
|
|
519
643
|
- views/index.haml
|
520
644
|
- views/layout.haml
|
521
645
|
- views/partials/actions.haml
|
646
|
+
- views/partials/content_tag.haml
|
522
647
|
- views/partials/delete_form.haml
|
523
648
|
- views/partials/filter_control.haml
|
524
649
|
- views/partials/footer.haml
|
525
650
|
- views/partials/form_control.haml
|
526
651
|
- views/partials/form_tag.haml
|
527
|
-
- views/partials/
|
652
|
+
- views/partials/navitems.haml
|
528
653
|
- views/partials/notifications.haml
|
529
654
|
- views/partials/pager.haml
|
530
655
|
- views/partials/search.haml
|
531
656
|
- views/partials/sidebar.haml
|
657
|
+
- views/partials/topbar.haml
|
532
658
|
- views/roles/display.haml
|
533
659
|
- views/roles/edit.haml
|
534
660
|
- views/roles/form.haml
|
@@ -541,6 +667,7 @@ files:
|
|
541
667
|
- views/user_login_traits/new.haml
|
542
668
|
- views/users/display.haml
|
543
669
|
- views/users/edit.haml
|
670
|
+
- views/users/form.haml
|
544
671
|
- views/users/identity.haml
|
545
672
|
- views/users/index.haml
|
546
673
|
- views/users/login_traits.haml
|
@@ -566,7 +693,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
566
693
|
- !ruby/object:Gem::Version
|
567
694
|
version: '0'
|
568
695
|
requirements: []
|
569
|
-
|
696
|
+
rubyforge_project:
|
697
|
+
rubygems_version: 2.7.7
|
570
698
|
signing_key:
|
571
699
|
specification_version: 4
|
572
700
|
summary: Sinatra Based Application Framework
|