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.
- checksums.yaml +4 -4
- data/app/assets/images/biovision/base/icons/key.svg +16 -0
- data/app/assets/javascripts/biovision/base/biovision.js +133 -2
- data/app/assets/stylesheets/biovision/base/admin/components.scss +40 -1
- data/app/assets/stylesheets/biovision/base/biovision.scss +1 -2
- data/app/controllers/admin/codes_controller.rb +9 -1
- data/app/controllers/admin/components_controller.rb +80 -10
- data/app/controllers/admin/editable_pages_controller.rb +6 -1
- data/app/controllers/admin/feedback_requests_controller.rb +10 -2
- data/app/controllers/admin/foreign_users_controller.rb +10 -4
- data/app/controllers/admin/login_attempts_controller.rb +14 -0
- data/app/controllers/admin/simple_blocks_controller.rb +6 -1
- data/app/controllers/admin/tokens_controller.rb +11 -5
- data/app/controllers/admin/users_controller.rb +11 -5
- data/app/controllers/admin_controller.rb +2 -2
- data/app/controllers/codes_controller.rb +12 -5
- data/app/controllers/editable_pages_controller.rb +6 -1
- data/app/controllers/foreign_users_controller.rb +12 -7
- data/app/controllers/simple_blocks_controller.rb +6 -1
- data/app/controllers/tokens_controller.rb +6 -1
- data/app/controllers/users_controller.rb +14 -9
- data/app/helpers/biovision_components_helper.rb +4 -1
- data/app/helpers/simple_image_helper.rb +43 -23
- data/app/models/biovision_component.rb +46 -1
- data/app/models/biovision_component_user.rb +2 -0
- data/app/models/concerns/checkable.rb +1 -1
- data/app/models/concerns/toggleable.rb +6 -2
- data/app/services/biovision/components/base_component.rb +44 -16
- data/app/services/biovision/components/contact_component.rb +4 -2
- data/app/services/biovision/components/content_component.rb +4 -2
- data/app/services/biovision/components/users_component.rb +6 -0
- data/app/uploaders/simple_image_uploader.rb +15 -1
- data/app/views/admin/codes/index.html.erb +2 -1
- data/app/views/admin/codes/show.html.erb +12 -10
- data/app/views/admin/components/entity/_links.html.erb +17 -2
- data/app/views/admin/components/links/_contact.html.erb +3 -1
- data/app/views/admin/components/links/_content.html.erb +4 -2
- data/app/views/admin/components/links/_users.html.erb +11 -7
- data/app/views/admin/components/privileges.html.erb +34 -0
- data/app/views/admin/components/privileges/_component_user.html.erb +67 -0
- data/app/views/admin/components/privileges/_new_user.html.erb +15 -0
- data/app/views/admin/components/privileges/_users.html.erb +23 -0
- data/app/views/admin/components/update_privileges.jbuilder +21 -0
- data/app/views/admin/editable_pages/index.html.erb +2 -1
- data/app/views/admin/editable_pages/show.html.erb +1 -0
- data/app/views/admin/feedback_requests/index.html.erb +2 -1
- data/app/views/admin/foreign_users/index.html.erb +2 -1
- data/app/views/admin/foreign_users/show.html.erb +1 -0
- data/app/views/admin/login_attempts/index.html.erb +2 -1
- data/app/views/admin/simple_blocks/index.html.erb +2 -1
- data/app/views/admin/simple_blocks/show.html.erb +1 -0
- data/app/views/admin/tokens/index.html.erb +2 -1
- data/app/views/admin/tokens/show.html.erb +12 -3
- data/app/views/admin/users/_search.html.erb +1 -1
- data/app/views/admin/users/codes.html.erb +4 -3
- data/app/views/admin/users/index.html.erb +2 -1
- data/app/views/admin/users/search.jbuilder +11 -9
- data/app/views/admin/users/show.html.erb +12 -6
- data/app/views/admin/users/tokens.html.erb +4 -3
- data/app/views/codes/edit.html.erb +4 -3
- data/app/views/codes/new.html.erb +3 -2
- data/app/views/editable_pages/edit.html.erb +1 -0
- data/app/views/editable_pages/new.html.erb +1 -0
- data/app/views/shared/entity/_attributes.html.erb +4 -0
- data/app/views/shared/entity/_timestamps.html.erb +8 -4
- data/app/views/shared/forms/_meta_texts.html.erb +54 -48
- data/app/views/simple_blocks/edit.html.erb +1 -0
- data/app/views/simple_blocks/new.html.erb +3 -2
- data/app/views/tokens/edit.html.erb +4 -3
- data/app/views/tokens/new.html.erb +3 -2
- data/config/locales/components-en.yml +2 -0
- data/config/locales/components-ru.yml +21 -0
- data/config/locales/users-ru.yml +2 -1
- data/config/routes.rb +6 -0
- data/db/migrate/20181217000000_create_biovision_components.rb +1 -0
- data/db/migrate/20181217000040_create_privileges.rb +1 -67
- data/db/migrate/20190826111111_add_priority_to_biovision_components.rb +14 -0
- data/db/migrate/{20190801111111_add_components.rb → 20190826121212_add_components.rb} +0 -0
- data/lib/biovision/base/base_methods.rb +13 -4
- data/lib/biovision/base/version.rb +1 -1
- metadata +11 -3
@@ -1,8 +1,9 @@
|
|
1
1
|
<% content_for :meta_title, t('.title') %>
|
2
2
|
<% content_for :breadcrumbs do %>
|
3
|
-
|
4
|
-
|
5
|
-
|
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
|
-
|
4
|
-
|
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>
|
@@ -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: "Просмотр"
|
data/config/locales/users-ru.yml
CHANGED
data/config/routes.rb
CHANGED
@@ -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
|
File without changes
|
@@ -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 [
|
165
|
-
def component_restriction(klass,
|
166
|
-
return if klass.allow?(current_user,
|
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
|
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.
|
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-
|
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/
|
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
|