symphonia 3.4.0 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -4
  3. data/CHANGELOG.md +27 -0
  4. data/README.md +16 -0
  5. data/app/assets/stylesheets/symphonia/_font_awesome.scss +29 -0
  6. data/app/assets/stylesheets/symphonia/_layout.scss +40 -0
  7. data/app/assets/stylesheets/symphonia/basic.scss +2 -35
  8. data/app/assets/stylesheets/symphonia/symphonia_bootstrap.scss +1 -46
  9. data/app/controllers/symphonia/accounts_controller.rb +5 -5
  10. data/app/controllers/symphonia/admin_controller.rb +1 -4
  11. data/app/helpers/symphonia/application_helper.rb +2 -2
  12. data/app/views/layouts/symphonia/application.html.erb +2 -2
  13. data/app/views/symphonia/admin/index.html.erb +1 -11
  14. data/db/migrate/20130714140501_create_roles.rb +6 -4
  15. data/db/migrate/20200428180001_add_uuid_to_users.rb +4 -2
  16. data/db/migrate/20210509141420_roles_change_permissions_to_json.rb +18 -0
  17. data/db/migrate/20210509180525_roles_change_permissions_to_native_json.rb +7 -0
  18. data/lib/generators/symphonia/setup/setup_generator.rb +17 -14
  19. data/lib/generators/symphonia/setup/templates/{settings.rb → app/config/initializers/settings.rb.tt} +0 -0
  20. data/lib/generators/symphonia/setup/templates/config/initializers/symphonia.rb.tt +48 -0
  21. data/lib/generators/symphonia/setup/templates/{404.html → public/404.html.tt} +4 -4
  22. data/lib/generators/symphonia/setup/templates/{500.html → public/500.html.tt} +0 -11
  23. data/lib/generators/symphonia/setup/templates/{spec_helper.rb → spec/spec_helper.rb.tt} +3 -2
  24. data/lib/symphonia/action_cable/connection.rb +5 -7
  25. data/lib/symphonia/admin_constraint.rb +3 -1
  26. data/lib/symphonia/model_attributes/attribute.rb +30 -14
  27. data/lib/symphonia/model_filters/base.rb +13 -15
  28. data/lib/symphonia/model_filters/boolean_filter.rb +10 -11
  29. data/lib/symphonia/model_filters/date_filter.rb +32 -31
  30. data/lib/symphonia/model_filters/integer_filter.rb +4 -5
  31. data/lib/symphonia/model_filters/select_filter.rb +19 -17
  32. data/lib/symphonia/model_filters/string_filter.rb +4 -5
  33. data/lib/symphonia/query.rb +10 -34
  34. data/lib/symphonia/query_columns/attribute_column.rb +59 -5
  35. data/lib/symphonia/query_columns.rb +1 -2
  36. data/lib/symphonia/spec_helper.rb +5 -3
  37. data/lib/symphonia/user_management.rb +0 -1
  38. data/lib/symphonia/version.rb +3 -1
  39. data/lib/symphonia.rb +4 -1
  40. data/spec/controllers/account_controller_spec.rb +66 -69
  41. data/spec/controllers/admin_controller_spec.rb +24 -25
  42. data/spec/libs/some_lib_spec.rb +1 -1
  43. data/spec/rails_helper.rb +4 -3
  44. data/spec/spec_helper.rb +3 -8
  45. metadata +69 -167
  46. data/app/models/symphonia/admin_module.rb +0 -18
  47. data/app/views/symphonia/filters/table.html.erb +0 -21
  48. data/db/migrate/20130828175114_create_attachments.rb +0 -20
  49. data/db/migrate/20141213204351_create_admin_modules.rb +0 -20
  50. data/lib/symphonia/query_columns/generic_column.rb +0 -165
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 690d5654253b68fefb5088b8938130e37baf32e2ac3a533af0ded29909f66a01
4
- data.tar.gz: 208b3dac35095799df42c565300f8c7877dad70a52ce966c6c7ad8e75048c710
3
+ metadata.gz: 37c5df664c5d4a4e23242972efcb37a44a97b0000c943aba8ff68ac7ebd4d2ec
4
+ data.tar.gz: 1636c08f1a1aa674319a19172cf0291d5fa910a9930056f8598ac96b7bf65937
5
5
  SHA512:
6
- metadata.gz: c23c2f1972886ac602da1fcd7fc0259b998a53787999bab18b7c320044b64a176a77227d20ec7d896868d74829464812f8a95a6910216e295f5b263dd65c3e65
7
- data.tar.gz: caa04002e0307779c75a0542124e6ca09a76463fb27b23aec0aa079b81d0af0b8c8cfabed6541472bc146ac1c086087910196969b85c83251b7a865eb906e4fe
6
+ metadata.gz: f2716c183798fd2acc14702ac79d44f4f210e4d4b770c6670ff78267c2ada056d3c331229371f02a66ca32d7496618a65972b1405860aace5fd7fc433161b94b
7
+ data.tar.gz: dbeff2e27c22f063183e6eecd395ba895cf8c6986841281d1914f2e3997ee4a833fd3e78c7a38dca24e49041083f3398a876ea8a4bd476b11ec57cf9830c1734
data/.rubocop.yml CHANGED
@@ -1,5 +1,10 @@
1
+ require:
2
+ - rubocop-rails
3
+ - rubocop-rspec
4
+
1
5
  AllCops:
2
6
  TargetRubyVersion: 2.5
7
+ NewCops: enable
3
8
 
4
9
  Layout/EmptyLinesAroundClassBody:
5
10
  EnforcedStyle: empty_lines_special
@@ -12,15 +17,13 @@ Metrics/AbcSize:
12
17
  Enabled: false
13
18
  Metrics/BlockLength:
14
19
  Enabled: false
15
- #Metrics/LineLength:
16
- # Enabled: false
17
20
  Metrics/MethodLength:
18
21
  Enabled: false
19
22
 
20
- #Style/BracesAroundHashParameters:
21
- # EnforcedStyle: context_dependent
22
23
  Style/Documentation:
23
24
  Enabled: false
25
+ Style/FrozenStringLiteralComment:
26
+ Enabled: false
24
27
  Style/MutableConstant:
25
28
  Enabled: false
26
29
  Style/NegatedIf:
data/CHANGELOG.md CHANGED
@@ -5,6 +5,33 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
+ ## [4.1.1] - 2021-12-26
9
+ ### Fixed
10
+ - user activation
11
+ ## [4.1.0] - 2021-10-23
12
+ ### Fixed
13
+ - missing default settings template in generator:setup
14
+ ### Added
15
+ - rubocop-rails
16
+ - rubocop-rspec
17
+ ### Removed
18
+ - mini_racer
19
+ ### Changed
20
+ - split SASS files
21
+
22
+ ## [4.0.0] - 2021-05-18
23
+ ### Removed
24
+ - development dependency in gemspec replaced by `symphonia_spec` gem
25
+ - GenericColumn in Query
26
+ - AdminModule class/table = its not used, its not working
27
+ ### Changed
28
+ - Rails 6.1 support
29
+ - Query#to_params boolean argument to named
30
+ - update generators
31
+ - use native JSON columns instead of serializations
32
+ ### Added
33
+ - Gemfile.lock
34
+
8
35
  ## [3.4.0] - 2021-03-22
9
36
  ### Changed
10
37
  - upgrade authlogic to 6.4.1 (rails6.1 compatible)
data/README.md CHANGED
@@ -14,3 +14,19 @@ after `bundle install` run post-installation: `rails g symphonia:setup`
14
14
  > Setup prepare `config/initializers/settings.rb`, create `spec/spec_helper.rb`, add stylesheets and javascripts references and copy basic layout.
15
15
 
16
16
 
17
+ ## Upgrade to v4.0
18
+ 1. update Gemfile:
19
+ ```ruby
20
+ gem 'rails', '~> 6.1'
21
+ gem 'symphonia', '~> 4.0'
22
+ source "https://gems.luk4s.cz" do
23
+ gem 'symphonia_spec', group: %i[development test]
24
+ end
25
+ ```
26
+ And `bundle update`
27
+ 2. upgrade rails:
28
+ https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
29
+ ```bash
30
+ export THOR_MERGE=vimdiff
31
+ rails app:update
32
+ ```
@@ -0,0 +1,29 @@
1
+ @import 'font-awesome';
2
+ /* Font awesome aliases */
3
+ .fa-add {
4
+ @extend .fa-plus-circle !optional;
5
+ }
6
+ .fa-delete, .fa-del {
7
+ @extend .fa-trash-o !optional;
8
+ }
9
+ .fa-back {
10
+ @extend .fa-chevron-left !optional;
11
+ }
12
+ .fa-true {
13
+ @extend .fa-check !optional;
14
+ }
15
+ .fa-false {
16
+ @extend .fa-times !optional;
17
+ }
18
+ .fa-notice {
19
+ @extend .fa-check-circle !optional;
20
+ }
21
+ .fa-error {
22
+ @extend .fa-times-circle !optional;
23
+ }
24
+ .alert .fa-info {
25
+ @extend .fa-info-circle !optional;
26
+ }
27
+ [class^="fa-"]:before:hover, a[class*=" fa-"]:before:hover {
28
+ text-decoration: none
29
+ }
@@ -0,0 +1,40 @@
1
+ @import "bootstrap";
2
+
3
+ // fixed navbar
4
+ body > .container {
5
+ padding-top: 80px;
6
+ }
7
+
8
+ @media print {
9
+ body > .container {
10
+ padding-top: 0 !important;
11
+ }
12
+ }
13
+
14
+ footer.footer {
15
+ height: 40px;
16
+ line-height: 40px;
17
+ bottom: 0;
18
+ width: 100%;
19
+ }
20
+
21
+ @keyframes highlight {
22
+ from {
23
+ background-color: map-get($theme-colors, warning);
24
+ }
25
+ to {
26
+ background-color: inherit;
27
+ }
28
+ }
29
+
30
+ @media print {
31
+ .contextual {
32
+ @extend .d-print-none;
33
+ }
34
+ a[href]:after {
35
+ content: none
36
+ }
37
+ .btn {
38
+ @extend .d-print-none;
39
+ }
40
+ }
@@ -1,37 +1,5 @@
1
- @import 'font-awesome';
2
- /* Font awesome aliases */
3
- .fa-add {
4
- //@extend .fa-plus-circle:before;
5
- @extend .fa-plus-circle !optional;
6
- }
7
- .fa-delete, .fa-del {
8
- @extend .fa-trash-o !optional;
9
- }
10
- .fa-back {
11
- @extend .fa-chevron-left !optional;
12
- }
13
- .fa-true {
14
- @extend .fa-check !optional;
15
- }
16
- .fa-false {
17
- @extend .fa-times !optional;
18
- }
1
+ @import "_font_awesome";
19
2
 
20
- .fa-notice {
21
- @extend .fa-check-circle !optional;
22
- }
23
- .fa-error {
24
- @extend .fa-times-circle !optional;
25
- }
26
- .alert .fa-info {
27
- @extend .fa-info-circle !optional;
28
- }
29
- [class^="fa-"]:before, [class*=" fa-"]:before {
30
- //padding-right: 5px;
31
- }
32
- [class^="fa-"]:before:hover, a[class*=" fa-"]:before:hover {
33
- text-decoration: none
34
- }
35
3
  .page-header.title, .page-header.title h1 {
36
4
  margin-top: 0;
37
5
  }
@@ -40,7 +8,6 @@
40
8
  }
41
9
  .reorder, .reorder label {
42
10
  cursor: move;
43
- cursor: -webkit-grabbing;
44
11
  }
45
12
 
46
13
  .flash {
@@ -217,4 +184,4 @@ table.table {
217
184
  .sortable-ghost {
218
185
  //border: 2px solid black;
219
186
  box-shadow: inset 0 0 5px #000000;
220
- }
187
+ }
@@ -1,47 +1,2 @@
1
- // require _bootstrap
2
- // *= require rails_bootstrap_forms
3
- // *= require bootstrap-datepicker3
4
- //@import "bootstrap-sprockets";
5
-
6
- @import "bootstrap";
1
+ @import "layout";
7
2
  @import "bootstrap-datepicker3";
8
-
9
-
10
- // fixed navbar
11
- body > .container {
12
- padding-top: 80px;
13
- }
14
-
15
- @media print {
16
- body > .container {
17
- padding-top: 0 !important;
18
- }
19
- }
20
-
21
- footer.footer {
22
- height: 40px;
23
- line-height: 40px;
24
- bottom: 0;
25
- width: 100%;
26
- }
27
-
28
- @keyframes highlight {
29
- from {
30
- background-color: map-get($theme-colors, warning);
31
- }
32
- to {
33
- background-color: inherit;
34
- }
35
- }
36
-
37
- @media print {
38
- .contextual {
39
- @extend .d-print-none;
40
- }
41
- a[href]:after {
42
- content: none
43
- }
44
- .btn {
45
- @extend .d-print-none;
46
- }
47
- }
@@ -32,7 +32,7 @@ module Symphonia
32
32
  if @user.valid? && verify_registration && @user.save(validate: false)
33
33
  Notifier.activation_user(@user).deliver_later
34
34
  Notifier.user_registered(@user).deliver_later
35
- format.html { redirect_to '/', notice: t(:text_user_registered) }
35
+ format.html { redirect_to login_path, notice: t(:text_user_registered) }
36
36
  format.json { render status: :created }
37
37
  else
38
38
  format.html { render action: 'register' }
@@ -71,14 +71,14 @@ module Symphonia
71
71
  @user = find_account_by_mail(params.require(:email))
72
72
  if @user
73
73
  if @user.active?
74
- redirect_to root_path, flash: { error: t(:text_user_alerady_active) }
74
+ redirect_to login_path, flash: { error: t(:text_user_alerady_active) }
75
75
  else
76
76
  @user.reset_perishable_token!
77
77
  Notifier.activation_user(@user).deliver_later
78
- redirect_to root_path, notice: t(:text_activation_resend)
78
+ redirect_to login_path, notice: t(:text_activation_resend)
79
79
  end
80
80
  else
81
- redirect_to root_path, flash: { error: t(:text_user_not_found) }
81
+ redirect_to login_path, flash: { error: t(:text_user_not_found) }
82
82
  end
83
83
  end
84
84
 
@@ -88,7 +88,7 @@ module Symphonia
88
88
  @user.activate!
89
89
  redirect_to login_path, notice: t(:text_activation_success)
90
90
  else
91
- redirect_to root_path, flash: { error: t(:text_user_not_found_or_token_invalid) }
91
+ redirect_to login_path, flash: { error: t(:text_user_not_found_or_token_invalid) }
92
92
  end
93
93
  end
94
94
 
@@ -3,9 +3,6 @@ module Symphonia
3
3
  before_action :login_require
4
4
 
5
5
  def index
6
- @admin_modules = AdminModule.where(user_id: [nil, current_user.id]).order(:position).all
7
- @modules_count = @admin_modules.count
8
-
9
6
  respond_to do |format|
10
7
  format.html
11
8
  end
@@ -19,4 +16,4 @@ module Symphonia
19
16
 
20
17
  end
21
18
 
22
- end
19
+ end
@@ -28,7 +28,7 @@ module Symphonia
28
28
  end
29
29
  end
30
30
 
31
- return s.html_safe
31
+ s.html_safe
32
32
  end
33
33
 
34
34
  def render_menu(menu, options = {})
@@ -38,7 +38,7 @@ module Symphonia
38
38
  end
39
39
  options[:container_class] ||= 'mr-auto'
40
40
 
41
- return content_tag(:ul, s.html_safe, itemscope: '', itemtype: 'http://schema.org/BreadcrumbList', class: "navbar-nav #{options[:container_class]}", id: menu.to_s)
41
+ content_tag(:ul, s.html_safe, itemscope: '', itemtype: 'http://schema.org/BreadcrumbList', class: "navbar-nav #{options[:container_class]}", id: menu.to_s)
42
42
  end
43
43
 
44
44
  def render_menu_node(menu, item, options = {})
@@ -5,9 +5,9 @@
5
5
  <title><%= html_title %></title>
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
7
  <%= yield :meta_tags %>
8
- <%= stylesheet_link_tag 'application', :media => 'all', 'data-turbolinks-track' => true %>
8
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': true %>
9
9
  <%= yield :stylesheet_tags %>
10
- <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
10
+ <%= javascript_include_tag 'application', 'data-turbolinks-track': true %>
11
11
  <script type="text/javascript">
12
12
  Symphonia.routes.reorderImagesPath = '<%= symphonia.reorder_attachment_path %>';
13
13
  </script>
@@ -1,15 +1,5 @@
1
1
  <%= title 'Administrace' %>
2
- <% @admin_modules.each_with_index do |admin_module, _index| %>
3
- <div class="col-lg-<%= @modules_count == 1 ? '12' : '6' %>" id="<%= dom_id(admin_module) %>">
4
- <h3><%= t(admin_module.title, scope: [:admin_module, :titles], default: admin_module.title) %></h3>
5
- <% if admin_module.body_path.is_a?(Symbol) %>
6
- <%= render(partial: "admin_modules/#{admin_module.body_path}", locals: { admin_module: admin_module }) -%>
7
- <% else %>
8
- <%= format_text(admin_module.body_path) -%>
9
- <% end -%>
10
- </div>
11
- <% end -%>
12
2
 
13
3
  <%= content_for :meta_tags do %>
14
4
  <meta name="turbolinks-root" content="/admin">
15
- <% end %>
5
+ <% end %>
@@ -1,10 +1,11 @@
1
- class CreateRoles < ActiveRecord::Migration[5.1]
1
+ class CreateRoles < ActiveRecord::Migration[6.1]
2
+
2
3
  def up
3
4
  create_table :roles do |t|
4
- t.string :name, :null => false
5
- t.text :description, :null => true
5
+ t.string :name, null: false
6
+ t.text :description, null: true
6
7
 
7
- t.text :permissions
8
+ t.text :permissions
8
9
 
9
10
  t.timestamps
10
11
  end
@@ -13,4 +14,5 @@ class CreateRoles < ActiveRecord::Migration[5.1]
13
14
  def down
14
15
  drop_table :roles
15
16
  end
17
+
16
18
  end
@@ -1,6 +1,8 @@
1
1
  class AddUuidToUsers < ActiveRecord::Migration[6.0]
2
+
2
3
  def change
3
- uuid_type = connection.adapter_name =~ /PostgreSQL/i ? :uuid : :string
4
- add_column :users, :uuid, uuid_type
4
+ # uuid_type = connection.adapter_name =~ /PostgreSQL/i ? :uuid : :string
5
+ add_column :users, :uuid, :uuid
5
6
  end
7
+
6
8
  end
@@ -0,0 +1,18 @@
1
+ class RolesChangePermissionsToJson < ActiveRecord::Migration[6.1]
2
+
3
+ def up
4
+ say_with_time "Convert 'roles.permissions' YAML to JSON" do
5
+ i = 0
6
+ Symphonia::Role.where.not(permissions: nil).each do |role|
7
+ yaml = product.read_attribute_before_type_cast :permissions
8
+ next unless yaml.start_with? "---"
9
+
10
+ role.update_columns permissions: YAML.safe_load(yaml)
11
+ i += 1
12
+ end
13
+
14
+ i
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,7 @@
1
+ class RolesChangePermissionsToNativeJson < ActiveRecord::Migration[6.1]
2
+
3
+ def up
4
+ change_column :roles, :permissions, :jsonb, using: 'permissions::jsonb'
5
+ end
6
+
7
+ end
@@ -2,17 +2,16 @@ require 'rails/generators'
2
2
 
3
3
  module Symphonia
4
4
  class SetupGenerator < Rails::Generators::Base
5
- # include Rails::Generators::Migration
6
5
 
7
6
  source_root File.expand_path('templates', __dir__)
8
7
 
9
8
  def create_settings
10
- copy_file 'settings.rb', 'config/initializers/settings.rb'
9
+ template 'config/initializers/symphonia.rb'
11
10
  end
12
11
 
13
12
  def copy_static
14
- copy_file '404.html', 'public/404.html'
15
- copy_file '500.html', 'public/500.html'
13
+ template 'public/404.html'
14
+ template 'public/500.html'
16
15
  end
17
16
 
18
17
  def copy_assets
@@ -22,16 +21,14 @@ module Symphonia
22
21
  end
23
22
 
24
23
  def copy_rspec
25
- copy_file 'spec_helper.rb', 'spec/spec_helper.rb'
24
+ template 'spec/spec_helper.rb'
26
25
 
27
26
  create_file '.rspec' do
28
- '--require spec_helper'
29
- '--format documentation'
27
+ "--require spec_helper"
30
28
  end
31
29
  end
32
30
 
33
31
  def copy_setup_file
34
-
35
32
  copy_file 'base_layout.html.erb', 'app/views/layouts/application.html.erb'
36
33
 
37
34
  append_to_file 'db/seeds.rb', 'Symphonia::Engine.load_seed'
@@ -40,14 +37,20 @@ module Symphonia
40
37
  inject_into_file 'config/routes.rb', after: "Rails.application.routes.draw do\n" do
41
38
  " mount Symphonia::Engine => '/'"
42
39
  end
40
+ end
41
+
42
+ def rubocop
43
+ create_file '.rubocop.yml' do
44
+ "inherit_gem:\n symphonia: .rubocop.yml"
45
+ end
46
+ end
47
+
48
+ def setup_gemfile
49
+ append_to_file 'Gemfile' do
50
+ "gem 'symphonia_spec', source: 'https://gems.luk4s.cz', group: %w[development test]"
51
+ end
43
52
 
44
53
  end
45
54
 
46
- # def setup_gemfile
47
- # append_to_file 'Gemfile' do
48
- # File.read(File.join(File.dirname(__FILE__), 'templates/Gemfile'))
49
- # end
50
- #
51
- # end
52
55
  end
53
56
  end
@@ -0,0 +1,48 @@
1
+ Symphonia.configure do |config|
2
+ config.after_login_path = ->(h) { h.symphonia.user_current_path }
3
+ config.allow_registrations = false
4
+ config.default_locale = :cs
5
+ end
6
+
7
+ # Symphonia::MenuManager.map :top_menu do |m|
8
+ # m[:home] = {
9
+ # label: :label_home,
10
+ # icon: 'fa fa-home',
11
+ # url: '/'
12
+ # }
13
+ # m[:users] = {
14
+ # label: :label_users,
15
+ # icon: 'fa fa-user',
16
+ # url: ->(h) { h.symphonia.users_path },
17
+ # if: proc { Symphonia::User.current.admin? }
18
+ # }
19
+ # m[:roles] = {
20
+ # label: :label_roles,
21
+ # icon: 'fa fa-key',
22
+ # url: ->(h) { h.symphonia.roles_path },
23
+ # if: proc { Symphonia::User.current.admin? }
24
+ # }
25
+ #
26
+ # end
27
+ # Symphonia::MenuManager.map :top_menu_account do |m|
28
+ # # -----
29
+ # m[:my_account] = {
30
+ # label: :label_my_account,
31
+ # icon: 'fa fa-wrench',
32
+ # url: ->(h) { h.symphonia.account_path },
33
+ # if: proc { Symphonia::User.current.logged_in? }
34
+ # }
35
+ # m[:logout] = {
36
+ # label: :button_logout,
37
+ # icon: 'fa fa-sign-out',
38
+ # url: ->(h) { h.symphonia.logout_path },
39
+ # method: 'delete',
40
+ # if: proc { Symphonia::User.current.logged_in? }
41
+ # }
42
+ # m[:login] = {
43
+ # label: :button_login,
44
+ # icon: 'fa fa-signin',
45
+ # url: ->(h) { h.symphonia.login_path },
46
+ # if: proc { !Symphonia::User.current.logged_in? }
47
+ # }
48
+ # end
@@ -3,13 +3,13 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>404 STránka nenalezena</title>
7
- <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" />
8
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" />
6
+ <title>404 Stránka nenalezena</title>
7
+ <link rel="stylesheet" href="//stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
8
+ <link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
9
9
  </head>
10
10
 
11
11
  <body>
12
- <!-- This file lives in public/500.html -->
12
+ <!-- This file lives in public/404.html -->
13
13
  <br />
14
14
  <div class="rows">
15
15
  <p class="col-sm-6 col-md-3">
@@ -21,17 +21,6 @@
21
21
  <p>
22
22
  Při zpracování požadavku došlo k vnitřní chybě serveru. Kontaktujte prosím administrátora.
23
23
  </p>
24
- <ul class="fa-ul">
25
- <li>
26
- <h3>Lukáš Pokorný</h3>
27
- </li>
28
- <li>
29
- <i class="fa fa-li fa fa-envelope"></i>e-mail: <a href="mailto:admin@lagrace.cz">admin@lagrace.cz</a>
30
- </li>
31
- <li>
32
- <i class="fa fa-li fa fa-mobile-phone"></i>tel: 604484983
33
- </li>
34
- </ul>
35
24
  </div>
36
25
  </div>
37
26
  </div>
@@ -1,11 +1,11 @@
1
1
  ENV['RAILS_ENV'] ||= 'test'
2
- require File.expand_path('../../config/environment', __FILE__)
2
+ require_relative '../../config/environment'
3
3
  # Prevent database truncation if the environment is production
4
4
  abort('The Rails environment is running in production mode!') if Rails.env.production?
5
5
 
6
6
  # require 'symphonia'
7
7
  RSpec.configure do |config|
8
- Dir.glob(File.join(__dir__, 'support', '*.rb')).each { |f| require f }
8
+ Dir.glob(File.join(__dir__, 'support', '*.rb')).sort.each { |f| require f }
9
9
 
10
10
  require 'symphonia/spec_helper'
11
11
 
@@ -15,4 +15,5 @@ RSpec.configure do |config|
15
15
 
16
16
  config.infer_spec_type_from_file_location!
17
17
  config.filter_rails_from_backtrace!
18
+ config.profile_examples = true
18
19
  end
@@ -9,17 +9,15 @@ module Symphonia
9
9
 
10
10
  def connect
11
11
  self.current_user = find_verified_user_or_guest
12
- logger.add_tags 'ActionCable', self.current_user.login unless self.current_user.nil?
12
+ logger.add_tags 'ActionCable', current_user.login unless current_user.nil?
13
13
  end
14
14
 
15
15
  protected
16
16
 
17
17
  def find_verified_user_or_guest
18
- if (credentials = request.session["symphonia/user_credentials"]).present?
19
- ::Symphonia::User.find_by_persistence_token(credentials.split(':')[0])
20
- else
21
- nil
22
- end
18
+ return if (credentials = request.session["symphonia/user_credentials"]).blank?
19
+
20
+ ::Symphonia::User.find_by(persistence_token: credentials.split(':')[0])
23
21
  end
24
22
  end
25
23
 
@@ -28,4 +26,4 @@ module Symphonia
28
26
 
29
27
  end
30
28
  end
31
- end
29
+ end
@@ -1,10 +1,12 @@
1
1
  module Symphonia
2
2
  class AdminConstraint
3
+
3
4
  def matches?(request)
4
5
  return false if (credentials = request.session["symphonia/user_credentials"]).blank?
5
6
 
6
7
  user = User.find_by_persistence_token(credentials.split(':')[0])
7
8
  user&.admin?
8
9
  end
10
+
9
11
  end
10
- end
12
+ end