biovision-base 0.39.190804.1 → 0.41.190905.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/biovision/base/icons/key.svg +16 -0
  3. data/app/assets/javascripts/biovision/base/biovision.js +133 -2
  4. data/app/assets/stylesheets/biovision/base/admin/components.scss +40 -1
  5. data/app/assets/stylesheets/biovision/base/biovision.scss +1 -2
  6. data/app/controllers/admin/codes_controller.rb +9 -1
  7. data/app/controllers/admin/components_controller.rb +80 -10
  8. data/app/controllers/admin/editable_pages_controller.rb +6 -1
  9. data/app/controllers/admin/feedback_requests_controller.rb +10 -2
  10. data/app/controllers/admin/foreign_users_controller.rb +10 -4
  11. data/app/controllers/admin/login_attempts_controller.rb +14 -0
  12. data/app/controllers/admin/simple_blocks_controller.rb +6 -1
  13. data/app/controllers/admin/tokens_controller.rb +11 -5
  14. data/app/controllers/admin/users_controller.rb +11 -5
  15. data/app/controllers/admin_controller.rb +2 -2
  16. data/app/controllers/codes_controller.rb +12 -5
  17. data/app/controllers/editable_pages_controller.rb +6 -1
  18. data/app/controllers/foreign_users_controller.rb +12 -7
  19. data/app/controllers/simple_blocks_controller.rb +6 -1
  20. data/app/controllers/tokens_controller.rb +6 -1
  21. data/app/controllers/users_controller.rb +14 -9
  22. data/app/helpers/biovision_components_helper.rb +4 -1
  23. data/app/helpers/simple_image_helper.rb +43 -23
  24. data/app/models/biovision_component.rb +46 -1
  25. data/app/models/biovision_component_user.rb +2 -0
  26. data/app/models/concerns/checkable.rb +1 -1
  27. data/app/models/concerns/toggleable.rb +6 -2
  28. data/app/services/biovision/components/base_component.rb +44 -16
  29. data/app/services/biovision/components/contact_component.rb +4 -2
  30. data/app/services/biovision/components/content_component.rb +4 -2
  31. data/app/services/biovision/components/users_component.rb +6 -0
  32. data/app/uploaders/simple_image_uploader.rb +15 -1
  33. data/app/views/admin/codes/index.html.erb +2 -1
  34. data/app/views/admin/codes/show.html.erb +12 -10
  35. data/app/views/admin/components/entity/_links.html.erb +17 -2
  36. data/app/views/admin/components/links/_contact.html.erb +3 -1
  37. data/app/views/admin/components/links/_content.html.erb +4 -2
  38. data/app/views/admin/components/links/_users.html.erb +11 -7
  39. data/app/views/admin/components/privileges.html.erb +34 -0
  40. data/app/views/admin/components/privileges/_component_user.html.erb +67 -0
  41. data/app/views/admin/components/privileges/_new_user.html.erb +15 -0
  42. data/app/views/admin/components/privileges/_users.html.erb +23 -0
  43. data/app/views/admin/components/update_privileges.jbuilder +21 -0
  44. data/app/views/admin/editable_pages/index.html.erb +2 -1
  45. data/app/views/admin/editable_pages/show.html.erb +1 -0
  46. data/app/views/admin/feedback_requests/index.html.erb +2 -1
  47. data/app/views/admin/foreign_users/index.html.erb +2 -1
  48. data/app/views/admin/foreign_users/show.html.erb +1 -0
  49. data/app/views/admin/login_attempts/index.html.erb +2 -1
  50. data/app/views/admin/simple_blocks/index.html.erb +2 -1
  51. data/app/views/admin/simple_blocks/show.html.erb +1 -0
  52. data/app/views/admin/tokens/index.html.erb +2 -1
  53. data/app/views/admin/tokens/show.html.erb +12 -3
  54. data/app/views/admin/users/_search.html.erb +1 -1
  55. data/app/views/admin/users/codes.html.erb +4 -3
  56. data/app/views/admin/users/index.html.erb +2 -1
  57. data/app/views/admin/users/search.jbuilder +11 -9
  58. data/app/views/admin/users/show.html.erb +12 -6
  59. data/app/views/admin/users/tokens.html.erb +4 -3
  60. data/app/views/codes/edit.html.erb +4 -3
  61. data/app/views/codes/new.html.erb +3 -2
  62. data/app/views/editable_pages/edit.html.erb +1 -0
  63. data/app/views/editable_pages/new.html.erb +1 -0
  64. data/app/views/shared/entity/_attributes.html.erb +4 -0
  65. data/app/views/shared/entity/_timestamps.html.erb +8 -4
  66. data/app/views/shared/forms/_meta_texts.html.erb +54 -48
  67. data/app/views/simple_blocks/edit.html.erb +1 -0
  68. data/app/views/simple_blocks/new.html.erb +3 -2
  69. data/app/views/tokens/edit.html.erb +4 -3
  70. data/app/views/tokens/new.html.erb +3 -2
  71. data/config/locales/components-en.yml +2 -0
  72. data/config/locales/components-ru.yml +21 -0
  73. data/config/locales/users-ru.yml +2 -1
  74. data/config/routes.rb +6 -0
  75. data/db/migrate/20181217000000_create_biovision_components.rb +1 -0
  76. data/db/migrate/20181217000040_create_privileges.rb +1 -67
  77. data/db/migrate/20190826111111_add_priority_to_biovision_components.rb +14 -0
  78. data/db/migrate/{20190801111111_add_components.rb → 20190826121212_add_components.rb} +0 -0
  79. data/lib/biovision/base/base_methods.rb +13 -4
  80. data/lib/biovision/base/version.rb +1 -1
  81. metadata +11 -3
@@ -1,8 +1,9 @@
1
1
  <% content_for :meta_title, t('.title') %>
2
2
  <% content_for :breadcrumbs do %>
3
- <%= link_to t('admin.tokens.nav_item.text'), admin_tokens_path %>
4
- <%= admin_token_link(@entity) %>
5
- <span><%= t(:edit) %></span>
3
+ <%= admin_biovision_component_link(component_handler.component) %>
4
+ <%= link_to t('admin.tokens.nav_item.text'), admin_tokens_path %>
5
+ <%= admin_token_link(@entity) %>
6
+ <span><%= t(:edit) %></span>
6
7
  <% end %>
7
8
 
8
9
  <article>
@@ -1,7 +1,8 @@
1
1
  <% content_for :meta_title, t('.title') %>
2
2
  <% content_for :breadcrumbs do %>
3
- <%= link_to t('admin.tokens.nav_item.text'), admin_tokens_path %>
4
- <span><%= t(:create) %></span>
3
+ <%= admin_biovision_component_link(component_handler.component) %>
4
+ <%= link_to t('admin.tokens.nav_item.text'), admin_tokens_path %>
5
+ <span><%= t(:create) %></span>
5
6
  <% end %>
6
7
 
7
8
  <article>
@@ -14,6 +14,8 @@ en:
14
14
  heading: "Компоненты"
15
15
  show:
16
16
  title: "Компонент %{slug}"
17
+ privileges:
18
+ nav_text: "Привилегии"
17
19
  biovision:
18
20
  components:
19
21
  contact:
@@ -5,13 +5,26 @@ ru:
5
5
  biovision_parameter: "Параметр"
6
6
  attributes:
7
7
  biovision_component:
8
+ priority: "Порядок сортировки"
8
9
  slug: "Идентификатор"
10
+ biovision_component_user:
11
+ administrator: "Администратор компонента"
12
+ privileges:
13
+ settings: "Управление настройками"
9
14
  admin:
10
15
  components:
11
16
  index:
12
17
  title: "Компоненты"
13
18
  nav_text: "Компоненты"
14
19
  heading: "Компоненты"
20
+ privileges:
21
+ nav_text: "Привилегии"
22
+ title: "Настройки компонента «%{slug}»"
23
+ users:
24
+ heading: "Пользователи"
25
+ new_user:
26
+ heading: "Добавить пользователя"
27
+ added_users: "Добавленные пользователи"
15
28
  show:
16
29
  title: "Компонент %{slug}"
17
30
  settings:
@@ -36,8 +49,12 @@ ru:
36
49
  name: "Контакты"
37
50
  settings:
38
51
  feedback_receiver: "Адрес для сообщений через форму обратной связи"
52
+ privileges:
53
+ feedback_manager: "Менеджер обратной связи"
39
54
  content:
40
55
  name: "Контент"
56
+ privileges:
57
+ content_manager: "Контент-менеджер"
41
58
  registration:
42
59
  name: "Регистрация"
43
60
  settings:
@@ -51,3 +68,7 @@ ru:
51
68
  invalid_code: "указан неверно"
52
69
  users:
53
70
  name: "Пользователи"
71
+ privileges:
72
+ edit: "Редактирование"
73
+ manage_codes: "Управление кодами"
74
+ view: "Просмотр"
@@ -321,8 +321,9 @@ ru:
321
321
  my:
322
322
  index:
323
323
  index:
324
- title: "Личный кабинет"
325
324
  heading: "Личный кабинет"
325
+ nav_text: "Личный кабинет"
326
+ title: "Личный кабинет"
326
327
  recoveries:
327
328
  create:
328
329
  impossible: "Сброс пароля для этого пользователя недоступен"
@@ -84,6 +84,12 @@ Rails.application.routes.draw do
84
84
  get 'settings' => :settings, as: :component_settings
85
85
  patch 'settings' => :update_settings, as: nil
86
86
  patch 'parameters' => :update_parameter, as: :component_parameters
87
+ get 'privileges' => :privileges, as: :component_privileges
88
+ patch 'privileges' => :update_privileges, as: nil
89
+ put 'administrators/:user_id' => :add_administrator, as: :component_administrators
90
+ delete 'administrators/:user_id' => :remove_administrator, as: nil
91
+ put 'users/:user_id/privileges/:privilege_slug' => :add_privilege, as: :component_privilege
92
+ delete 'users/:user_id/privileges/:privilege_slug' => :remove_privilege, as: nil
87
93
  end
88
94
  end
89
95
 
@@ -17,6 +17,7 @@ class CreateBiovisionComponents < ActiveRecord::Migration[5.2]
17
17
  def create_components_table
18
18
  create_table :biovision_components, comment: 'Biovision component' do |t|
19
19
  t.timestamps
20
+ t.integer :priority, limit: 2, default: 1, null: false
20
21
  t.string :slug, null: false
21
22
  t.jsonb :settings, null: false, default: {}
22
23
  t.jsonb :parameters, null: false, default: {}
@@ -8,8 +8,6 @@ class CreatePrivileges < ActiveRecord::Migration[5.1]
8
8
  create_user_privileges unless UserPrivilege.table_exists?
9
9
  create_privilege_groups unless PrivilegeGroup.table_exists?
10
10
  create_privilege_group_links unless PrivilegeGroupPrivilege.table_exists?
11
-
12
- seed_privileges
13
11
  end
14
12
 
15
13
  # Drop tables
@@ -29,6 +27,7 @@ class CreatePrivileges < ActiveRecord::Migration[5.1]
29
27
  t.integer :parent_id
30
28
  t.boolean :administrative, default: true, null: false
31
29
  t.boolean :deletable, default: true, null: false
30
+ t.boolean :regional, default: false, null: false
32
31
  t.integer :priority, limit: 2, default: 1, null: false
33
32
  t.integer :users_count, default: 0, null: false
34
33
  t.string :parents_cache, default: '', null: false
@@ -74,69 +73,4 @@ class CreatePrivileges < ActiveRecord::Migration[5.1]
74
73
  t.boolean :deletable, default: true, null: false
75
74
  end
76
75
  end
77
-
78
- # Create initial privileges and groups
79
- def seed_privileges
80
- groups = {
81
- administrators: {
82
- name: 'Администраторы',
83
- description: 'Административная группа',
84
- privileges: {
85
- administrator: ['Администратор', 'Может управлять пользователями и привилегиями.']
86
- }
87
- },
88
- analysts: {
89
- name: 'Аналитики',
90
- description: 'Группа аналитиков различных метрик сайта',
91
- privileges: {
92
- mertics_manager: ['Аналитик метрик', 'Может просматривать метрики.']
93
- }
94
- },
95
- moderators: {
96
- name: 'Модераторы',
97
- description: 'Отвечает за пользовательский контент и блокировку пользователей',
98
- privileges: {
99
- moderator: ['Модератор', 'Управляет блокировками пользователей и следит за пользовательским контентом.']
100
- }
101
- },
102
- content_managers: {
103
- name: 'Контент-менеджеры',
104
- description: 'Отвечают за наполнение информационных разделов',
105
- privileges: {
106
- content_manager: ['Контент-менеджер', 'Редактирует информационные разделы.']
107
- }
108
- },
109
- feedback_managers: {
110
- name: 'Менеджеры обратной связи',
111
- description: 'Отвечают за обратную связь с пользователями',
112
- privileges: {
113
- feedback_manager: ['Менеджер обратной связи', 'Обрабатывает обращения через формы обратной связи.']
114
- }
115
- }
116
- }
117
-
118
- groups.each do |slug, data|
119
- privilege_group = PrivilegeGroup.create!(
120
- slug: slug,
121
- name: data[:name],
122
- description: data[:description],
123
- deletable: false
124
- )
125
-
126
- data[:privileges].each do |privilege_slug, privilege_data|
127
- privilege = Privilege.create!(
128
- slug: privilege_slug,
129
- name: privilege_data[0],
130
- description: privilege_data[1],
131
- deletable: false
132
- )
133
-
134
- PrivilegeGroupPrivilege.create!(
135
- privilege: privilege,
136
- privilege_group: privilege_group,
137
- deletable: false
138
- )
139
- end
140
- end
141
- end
142
76
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Add priority column for components table
4
+ class AddPriorityToBiovisionComponents < ActiveRecord::Migration[5.2]
5
+ def up
6
+ return if column_exists? :biovision_components, :priority
7
+
8
+ add_column :biovision_components, :priority, :integer, limit: 2, default: 1, null: false
9
+ end
10
+
11
+ def down
12
+ # No rollback needed
13
+ end
14
+ end
@@ -9,9 +9,10 @@ module Biovision
9
9
  included do
10
10
  before_action :set_locale
11
11
 
12
+ helper_method :agent, :visitor_slug
13
+ helper_method :component_handler
12
14
  helper_method :current_page, :param_from_request
13
15
  helper_method :current_user, :current_language
14
- helper_method :agent, :visitor_slug
15
16
  end
16
17
 
17
18
  # Get current page number from request
@@ -161,14 +162,22 @@ module Biovision
161
162
  end
162
163
 
163
164
  # @param [Class] klass
164
- # @param [Hash] options
165
- def component_restriction(klass, options = {})
166
- return if klass.allow?(current_user, options)
165
+ # @param [String] privilege_name
166
+ def component_restriction(klass, privilege_name)
167
+ return if klass.allow?(current_user, privilege_name)
167
168
 
168
169
  error = "User #{current_user&.id} has no privileges in #{klass}"
169
170
 
170
171
  handle_http_401(error)
171
172
  end
173
+
174
+ def component_slug
175
+ nil
176
+ end
177
+
178
+ def component_handler
179
+ @component_handler ||= Biovision::Components::BaseComponent.handler(component_slug, current_user)
180
+ end
172
181
  end
173
182
  end
174
183
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Biovision
4
4
  module Base
5
- VERSION = '0.39.190804.1'
5
+ VERSION = '0.41.190905.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: biovision-base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.39.190804.1
4
+ version: 0.41.190905.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxim Khan-Magomedov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-03 00:00:00.000000000 Z
11
+ date: 2019-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -197,6 +197,7 @@ files:
197
197
  - app/assets/images/biovision/base/icons/exit.svg
198
198
  - app/assets/images/biovision/base/icons/foreign/facebook.svg
199
199
  - app/assets/images/biovision/base/icons/gear.svg
200
+ - app/assets/images/biovision/base/icons/key.svg
200
201
  - app/assets/images/biovision/base/icons/lock-closed.svg
201
202
  - app/assets/images/biovision/base/icons/lock-open.svg
202
203
  - app/assets/images/biovision/base/icons/notice.svg
@@ -395,12 +396,17 @@ files:
395
396
  - app/views/admin/components/links/_contact.html.erb
396
397
  - app/views/admin/components/links/_content.html.erb
397
398
  - app/views/admin/components/links/_users.html.erb
399
+ - app/views/admin/components/privileges.html.erb
400
+ - app/views/admin/components/privileges/_component_user.html.erb
401
+ - app/views/admin/components/privileges/_new_user.html.erb
402
+ - app/views/admin/components/privileges/_users.html.erb
398
403
  - app/views/admin/components/settings.html.erb
399
404
  - app/views/admin/components/settings/_new_parameter.html.erb
400
405
  - app/views/admin/components/settings/_parameters.html.erb
401
406
  - app/views/admin/components/settings/_setting.html.erb
402
407
  - app/views/admin/components/settings/_settings.html.erb
403
408
  - app/views/admin/components/show.html.erb
409
+ - app/views/admin/components/update_privileges.jbuilder
404
410
  - app/views/admin/editable_blocks/_nav_item.html.erb
405
411
  - app/views/admin/editable_blocks/entity/_in_list.html.erb
406
412
  - app/views/admin/editable_blocks/index.html.erb
@@ -626,6 +632,7 @@ files:
626
632
  - app/views/shared/admin/_list_with_priority.html.erb
627
633
  - app/views/shared/admin/_toggleable.html.erb
628
634
  - app/views/shared/editable_pages/_body.html.erb
635
+ - app/views/shared/entity/_attributes.html.erb
629
636
  - app/views/shared/entity/_meta_texts.html.erb
630
637
  - app/views/shared/entity/_metadata.html.erb
631
638
  - app/views/shared/entity/_timestamps.html.erb
@@ -701,7 +708,8 @@ files:
701
708
  - db/migrate/20190610141414_add_user_to_feedback_requests.rb
702
709
  - db/migrate/20190730000000_create_biovision_component_users.rb
703
710
  - db/migrate/20190731222222_add_biovision_component_to_metrics.rb
704
- - db/migrate/20190801111111_add_components.rb
711
+ - db/migrate/20190826111111_add_priority_to_biovision_components.rb
712
+ - db/migrate/20190826121212_add_components.rb
705
713
  - db/obsolete_migrations/20171223333333_amend_foreign_keys.rb
706
714
  - db/obsolete_migrations/20180117151515_add_language_to_models.rb
707
715
  - db/obsolete_migrations/20180321000000_add_profile_data_to_users.rb