biovision-base 0.11.180127 → 0.14.180326

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +23 -0
  3. data/app/assets/javascripts/biovision/base/biovision-sliders.js +12 -9
  4. data/app/assets/javascripts/biovision/base/biovision.js +187 -2
  5. data/app/assets/stylesheets/biovision/base/admin.scss +84 -40
  6. data/app/assets/stylesheets/biovision/base/biovision.scss +104 -44
  7. data/app/assets/stylesheets/biovision/base/buttons/buttons-common.scss +95 -0
  8. data/app/assets/stylesheets/biovision/base/buttons/buttons-rounded.scss +26 -0
  9. data/app/assets/stylesheets/biovision/base/default.scss +2 -2
  10. data/app/assets/stylesheets/biovision/base/default_admin.scss +1 -1
  11. data/app/assets/stylesheets/biovision/base/default_application.scss +1 -1
  12. data/app/assets/stylesheets/biovision/base/themes/simple-layout.scss +115 -0
  13. data/app/assets/stylesheets/biovision/base/users.scss +15 -0
  14. data/app/controllers/agents_controller.rb +3 -3
  15. data/app/controllers/authentication_controller.rb +4 -4
  16. data/app/controllers/browsers_controller.rb +3 -3
  17. data/app/controllers/codes_controller.rb +2 -2
  18. data/app/controllers/editable_pages_controller.rb +6 -5
  19. data/app/controllers/index_controller.rb +1 -1
  20. data/app/controllers/media_files_controller.rb +3 -3
  21. data/app/controllers/media_folders_controller.rb +3 -3
  22. data/app/controllers/metrics_controller.rb +1 -1
  23. data/app/controllers/my/index_controller.rb +2 -0
  24. data/app/controllers/my/profiles_controller.rb +15 -9
  25. data/app/controllers/privilege_groups_controller.rb +2 -2
  26. data/app/controllers/privileges_controller.rb +3 -3
  27. data/app/controllers/stored_values_controller.rb +2 -2
  28. data/app/controllers/tokens_controller.rb +2 -2
  29. data/app/controllers/users_controller.rb +26 -10
  30. data/app/helpers/biovision_helper.rb +13 -2
  31. data/app/helpers/biovision_users_helper.rb +20 -5
  32. data/app/helpers/codes_helper.rb +1 -1
  33. data/app/helpers/editable_pages_helper.rb +1 -1
  34. data/app/helpers/languages_helper.rb +18 -0
  35. data/app/helpers/media_helper.rb +2 -2
  36. data/app/helpers/privileges_helper.rb +2 -2
  37. data/app/helpers/stored_values_helper.rb +1 -1
  38. data/app/helpers/tracking_helper.rb +2 -2
  39. data/app/models/editable_page.rb +10 -1
  40. data/app/models/user.rb +17 -23
  41. data/app/services/user_manager.rb +15 -18
  42. data/app/services/user_profile_handler.rb +28 -0
  43. data/app/uploaders/avatar_uploader.rb +1 -5
  44. data/app/uploaders/editable_page_image_uploader.rb +1 -1
  45. data/app/views/admin/agents/entity/_in_list.html.erb +3 -3
  46. data/app/views/admin/agents/show.html.erb +10 -2
  47. data/app/views/admin/browsers/entity/_in_list.html.erb +3 -3
  48. data/app/views/admin/browsers/show.html.erb +2 -2
  49. data/app/views/admin/codes/entity/_in_list.html.erb +1 -1
  50. data/app/views/admin/codes/show.html.erb +1 -1
  51. data/app/views/admin/editable_pages/entity/_in_list.html.erb +7 -1
  52. data/app/views/admin/editable_pages/show.html.erb +26 -19
  53. data/app/views/admin/feedback_requests/entity/_in_list.html.erb +1 -1
  54. data/app/views/admin/index/_biovision_base.html.erb +1 -0
  55. data/app/views/admin/media_files/entity/_in_list.html.erb +1 -1
  56. data/app/views/admin/media_files/show.html.erb +2 -2
  57. data/app/views/admin/media_folders/entity/_in_list.html.erb +2 -2
  58. data/app/views/admin/media_folders/files.html.erb +1 -1
  59. data/app/views/admin/media_folders/show.html.erb +6 -4
  60. data/app/views/admin/metrics/_list.html.erb +2 -2
  61. data/app/views/admin/metrics/show.html.erb +2 -2
  62. data/app/views/admin/privilege_groups/entity/_in_list.html.erb +1 -1
  63. data/app/views/admin/privilege_groups/show.html.erb +1 -1
  64. data/app/views/admin/privileges/entity/_in_list.html.erb +4 -4
  65. data/app/views/admin/privileges/show.html.erb +4 -4
  66. data/app/views/admin/privileges/users.html.erb +1 -1
  67. data/app/views/admin/stored_values/entity/_in_list.html.erb +1 -1
  68. data/app/views/admin/stored_values/show.html.erb +1 -1
  69. data/app/views/admin/tokens/entity/_in_list.html.erb +2 -2
  70. data/app/views/admin/tokens/show.html.erb +2 -2
  71. data/app/views/admin/users/codes.html.erb +1 -1
  72. data/app/views/admin/users/entity/_in_list.html.erb +3 -2
  73. data/app/views/admin/users/entity/_privilege.html.erb +1 -1
  74. data/app/views/admin/users/entity/_profile.html.erb +17 -0
  75. data/app/views/admin/users/privileges.html.erb +1 -1
  76. data/app/views/admin/users/search.jbuilder +2 -2
  77. data/app/views/admin/users/show.html.erb +34 -49
  78. data/app/views/admin/users/tokens.html.erb +1 -1
  79. data/app/views/agents/_agent.jbuilder +1 -1
  80. data/app/views/agents/edit.html.erb +1 -1
  81. data/app/views/authentication/_form.html.erb +1 -1
  82. data/app/views/authentication/create.jbuilder +10 -0
  83. data/app/views/browsers/edit.html.erb +1 -1
  84. data/app/views/codes/edit.html.erb +1 -1
  85. data/app/views/editable_pages/_form.html.erb +116 -61
  86. data/app/views/editable_pages/edit.html.erb +1 -1
  87. data/app/views/index/index.html.erb +8 -6
  88. data/app/views/index/index/_custom_dashboard.html.erb +0 -0
  89. data/app/views/index/index/_default_dashboard.html.erb +2 -0
  90. data/app/views/index/index/_editable.html.erb +9 -0
  91. data/app/views/layouts/admin/_header.html.erb +1 -1
  92. data/app/views/layouts/application/_header.html.erb +1 -1
  93. data/app/views/layouts/application/header/authentication/_links.html.erb +3 -3
  94. data/app/views/layouts/application/header/authentication/_plate.html.erb +1 -1
  95. data/app/views/layouts/profile.html.erb +23 -0
  96. data/app/views/layouts/profile/_footer.html.erb +11 -0
  97. data/app/views/layouts/profile/_header.html.erb +9 -0
  98. data/app/views/layouts/profile/header/_navigation.html.erb +0 -0
  99. data/app/views/media_files/edit.html.erb +1 -1
  100. data/app/views/media_folders/_form.html.erb +0 -2
  101. data/app/views/media_folders/edit.html.erb +1 -1
  102. data/app/views/media_folders/new.html.erb +1 -1
  103. data/app/views/metrics/edit.html.erb +2 -2
  104. data/app/views/my/index/index.html.erb +9 -14
  105. data/app/views/my/index/index/_dashboard.html.erb +12 -0
  106. data/app/views/my/index/index/_sidebar.html.erb +11 -0
  107. data/app/views/my/login_attempts/index.html.erb +1 -1
  108. data/app/views/my/profiles/_nav_item.html.erb +1 -1
  109. data/app/views/my/profiles/edit.js.erb +1 -0
  110. data/app/views/my/profiles/edit/_form.html.erb +130 -116
  111. data/app/views/my/profiles/edit/form/_profile_data.html.erb +53 -0
  112. data/app/views/my/profiles/new.js.erb +1 -0
  113. data/app/views/my/profiles/new/_form.html.erb +100 -53
  114. data/app/views/my/tokens/_toggleable.html.erb +1 -1
  115. data/app/views/my/tokens/index.html.erb +1 -1
  116. data/app/views/privilege_groups/edit.html.erb +1 -1
  117. data/app/views/privileges/edit.html.erb +1 -1
  118. data/app/views/profiles/_profile.html.erb +5 -6
  119. data/app/views/shared/_pagination.jbuilder +4 -0
  120. data/app/views/shared/admin/_list_with_priority.html.erb +6 -1
  121. data/app/views/shared/forms/_list_of_errors.js.erb +2 -0
  122. data/app/views/shared/forms/_wysiwyg.html.erb +11 -0
  123. data/app/views/shared/forms/errors.js.erb +5 -0
  124. data/app/views/stored_values/edit.html.erb +1 -1
  125. data/app/views/tokens/edit.html.erb +1 -1
  126. data/app/views/users/_form.html.erb +141 -83
  127. data/app/views/users/check.jbuilder +4 -0
  128. data/app/views/users/edit.html.erb +1 -1
  129. data/app/views/users/form/_profile_data.html.erb +53 -0
  130. data/app/views/users/new.html.erb +1 -1
  131. data/config/locales/common-en.yml +2 -0
  132. data/config/locales/common-ru.yml +2 -0
  133. data/config/locales/editable-pages-en.yml +5 -4
  134. data/config/locales/editable-pages-ru.yml +5 -4
  135. data/config/locales/users-en.yml +388 -0
  136. data/config/locales/users-ru.yml +8 -3
  137. data/config/routes.rb +127 -103
  138. data/db/migrate/20170302000001_create_users.rb +2 -0
  139. data/db/migrate/20170320000000_create_editable_pages.rb +1 -1
  140. data/db/migrate/20180321000000_add_profile_data_to_users.rb +31 -0
  141. data/lib/biovision/base/base_methods.rb +37 -7
  142. data/lib/biovision/base/engine.rb +1 -1
  143. data/lib/biovision/base/privilege_methods.rb +1 -1
  144. data/lib/biovision/base/version.rb +1 -1
  145. metadata +27 -6
  146. data/app/assets/stylesheets/biovision/base/buttons.scss +0 -195
  147. data/app/assets/stylesheets/biovision/base/layout.scss +0 -193
  148. data/app/views/editable_pages/form/_ckeditor.html.erb +0 -11
  149. data/db/migrate/20170302000002_create_user_profiles.rb +0 -21
@@ -126,3 +126,18 @@ article.user {
126
126
  margin-bottom: 2.4rem;
127
127
  }
128
128
  }
129
+
130
+ #my-index {
131
+ display: flex;
132
+ flex-wrap: wrap;
133
+
134
+ .sidebar {
135
+ flex: none;
136
+ width: 30rem;
137
+ }
138
+
139
+ .content {
140
+ flex: 1;
141
+ padding: 0 1.6rem;
142
+ }
143
+ }
@@ -11,7 +11,7 @@ class AgentsController < AdminController
11
11
  def create
12
12
  @entity = Agent.new entity_parameters
13
13
  if @entity.save
14
- redirect_to admin_agent_path(@entity)
14
+ redirect_to admin_agent_path(id: @entity.id)
15
15
  else
16
16
  render :new, status: :bad_request
17
17
  end
@@ -28,7 +28,7 @@ class AgentsController < AdminController
28
28
  # patch /agents/:id
29
29
  def update
30
30
  if @entity.update entity_parameters
31
- redirect_to admin_agent_path(@entity), notice: t('agents.update.success')
31
+ redirect_to admin_agent_path(id: @entity.id), notice: t('agents.update.success')
32
32
  else
33
33
  render :edit, status: :bad_request
34
34
  end
@@ -57,7 +57,7 @@ class AgentsController < AdminController
57
57
 
58
58
  def restrict_editing
59
59
  if @entity.locked?
60
- redirect_to admin_agent_path(@entity), alert: t('agents.edit.forbidden')
60
+ redirect_to admin_agent_path(id: @entity.id), alert: t('agents.edit.forbidden')
61
61
  end
62
62
  end
63
63
 
@@ -62,13 +62,13 @@ class AuthenticationController < ApplicationController
62
62
  end
63
63
 
64
64
  def redirect_after_success
65
- return_path = cookies['return_path'].to_s
66
- return_path = my_path unless return_path[0] == '/'
65
+ @return_path = cookies['return_path'].to_s
66
+ @return_path = my_path unless @return_path[0] == '/'
67
67
  cookies.delete 'return_path', domain: :all
68
68
 
69
69
  respond_to do |format|
70
- format.json { render(json: { data: { url: return_path } }) }
71
- format.html { redirect_to(return_path) }
70
+ format.json
71
+ format.html { redirect_to(@return_path) }
72
72
  end
73
73
  end
74
74
  end
@@ -11,7 +11,7 @@ class BrowsersController < AdminController
11
11
  def create
12
12
  @entity = Browser.new entity_parameters
13
13
  if @entity.save
14
- redirect_to admin_browser_path(@entity)
14
+ redirect_to admin_browser_path(id: @entity.id)
15
15
  else
16
16
  render :new, status: :bad_request
17
17
  end
@@ -24,7 +24,7 @@ class BrowsersController < AdminController
24
24
  # patch /browsers/:id
25
25
  def update
26
26
  if @entity.update entity_parameters
27
- redirect_to admin_browser_path(@entity), notice: t('browsers.update.success')
27
+ redirect_to admin_browser_path(id: @entity.id), notice: t('browsers.update.success')
28
28
  else
29
29
  render :edit, status: :bad_request
30
30
  end
@@ -53,7 +53,7 @@ class BrowsersController < AdminController
53
53
 
54
54
  def restrict_editing
55
55
  if @entity.locked?
56
- redirect_to admin_browser_path(@entity), alert: t('browsers.edit.forbidden')
56
+ redirect_to admin_browser_path(id: @entity.id), alert: t('browsers.edit.forbidden')
57
57
  end
58
58
  end
59
59
 
@@ -10,7 +10,7 @@ class CodesController < AdminController
10
10
  def create
11
11
  @entity = Code.new(creation_parameters)
12
12
  if @entity.save
13
- redirect_to admin_code_path(@entity.id)
13
+ redirect_to admin_code_path(id: @entity.id)
14
14
  else
15
15
  render :new, status: :bad_request
16
16
  end
@@ -23,7 +23,7 @@ class CodesController < AdminController
23
23
  # patch /codes/:id
24
24
  def update
25
25
  if @entity.update(entity_parameters)
26
- redirect_to admin_code_path(@entity.id), notice: t('codes.update.success')
26
+ redirect_to admin_code_path(id: @entity.id), notice: t('codes.update.success')
27
27
  else
28
28
  render :edit, status: :bad_request
29
29
  end
@@ -10,9 +10,9 @@ class EditablePagesController < AdminController
10
10
  def create
11
11
  @entity = EditablePage.new(creation_parameters)
12
12
  if @entity.save
13
- redirect_to(admin_editable_page_path(@entity.id))
13
+ form_processed_ok(admin_editable_page_path(id: @entity.id))
14
14
  else
15
- render :new, status: :bad_request
15
+ form_processed_with_error(:new)
16
16
  end
17
17
  end
18
18
 
@@ -22,10 +22,11 @@ class EditablePagesController < AdminController
22
22
 
23
23
  # patch /editable_pages/:id
24
24
  def update
25
- if @entity.update entity_parameters
26
- redirect_to admin_editable_page_path(@entity), notice: t('editable_pages.update.success')
25
+ if @entity.update(entity_parameters)
26
+ flash[:notice] = t('editable_pages.update.success')
27
+ form_processed_ok(admin_editable_page_path(id: @entity.id))
27
28
  else
28
- render :edit, status: :bad_request
29
+ form_processed_with_error(:edit)
29
30
  end
30
31
  end
31
32
 
@@ -1,6 +1,6 @@
1
1
  class IndexController < ApplicationController
2
2
  # get /
3
3
  def index
4
- @editable_page = EditablePage.find_by(slug: 'index')
4
+ @editable_page = EditablePage.find_localized('index', locale)
5
5
  end
6
6
  end
@@ -15,7 +15,7 @@ class MediaFilesController < ApplicationController
15
15
  def create
16
16
  @entity = MediaFile.new(creation_parameters)
17
17
  if @entity.save
18
- next_page = admin_media_file_path(@entity.id)
18
+ next_page = admin_media_file_path(id: @entity.id)
19
19
  respond_to do |format|
20
20
  format.html { redirect_to(next_page) }
21
21
  format.json { render json: { links: { self: next_page } } }
@@ -33,7 +33,7 @@ class MediaFilesController < ApplicationController
33
33
  # patch /media_files/:id
34
34
  def update
35
35
  if @entity.update entity_parameters
36
- next_page = admin_media_file_path(@entity)
36
+ next_page = admin_media_file_path(id: @entity.id)
37
37
  respond_to do |format|
38
38
  format.html { redirect_to(next_page, notice: t('media_files.update.success')) }
39
39
  format.json { render json: { links: { self: next_page } } }
@@ -77,7 +77,7 @@ class MediaFilesController < ApplicationController
77
77
 
78
78
  def restrict_editing
79
79
  unless @entity.editable_by?(current_user)
80
- redirect_to admin_media_file_path(@entity.id), alert: t('media_files.edit.forbidden')
80
+ redirect_to admin_media_file_path(id: @entity.id), alert: t('media_files.edit.forbidden')
81
81
  end
82
82
  end
83
83
 
@@ -12,7 +12,7 @@ class MediaFoldersController < AdminController
12
12
  def create
13
13
  @entity = MediaFolder.new(creation_parameters)
14
14
  if @entity.save
15
- next_page = admin_media_folder_path(@entity.id)
15
+ next_page = admin_media_folder_path(id: @entity.id)
16
16
  respond_to do |format|
17
17
  format.html { redirect_to next_page }
18
18
  format.json { render json: { links: { self: next_page } } }
@@ -30,7 +30,7 @@ class MediaFoldersController < AdminController
30
30
  # patch /media_folders/:id
31
31
  def update
32
32
  if @entity.update(entity_parameters)
33
- next_page = admin_media_folder_path(@entity.id)
33
+ next_page = admin_media_folder_path(id: @entity.id)
34
34
  respond_to do |format|
35
35
  format.html { redirect_to next_page }
36
36
  format.json { render json: { links: { self: next_page } } }
@@ -54,7 +54,7 @@ class MediaFoldersController < AdminController
54
54
  def set_entity
55
55
  @entity = MediaFolder.find_by(id: params[:id])
56
56
  if @entity.nil?
57
- handle_http_404('Cannot find post')
57
+ handle_http_404('Cannot find media_folder')
58
58
  end
59
59
  end
60
60
 
@@ -8,7 +8,7 @@ class MetricsController < AdminController
8
8
  # patch /metrics/:id
9
9
  def update
10
10
  if @entity.update entity_parameters
11
- redirect_to admin_metric_path(@entity.id), notice: t('metrics.update.success')
11
+ redirect_to admin_metric_path(id: @entity.id), notice: t('metrics.update.success')
12
12
  else
13
13
  render :edit, status: :bad_request
14
14
  end
@@ -1,6 +1,8 @@
1
1
  class My::IndexController < ApplicationController
2
2
  before_action :restrict_anonymous_access
3
3
 
4
+ # layout 'profile'
5
+
4
6
  # get /my
5
7
  def index
6
8
  end
@@ -29,10 +29,10 @@ class My::ProfilesController < ApplicationController
29
29
  # patch /my/profile
30
30
  def update
31
31
  if current_user.update(user_parameters)
32
- current_user.user_profile.update(profile_parameters)
33
- redirect_to my_profile_path, notice: t('my.profiles.update.success')
32
+ flash[:notice] = t('my.profiles.update.success')
33
+ form_processed_ok(my_profile_path)
34
34
  else
35
- render :edit, status: :bad_request
35
+ form_processed_with_error(:edit)
36
36
  end
37
37
  end
38
38
 
@@ -49,20 +49,20 @@ class My::ProfilesController < ApplicationController
49
49
  create_token_for_user(@user)
50
50
  redirect_after_creation
51
51
  else
52
- render :new, status: :bad_request
52
+ form_processed_with_error(:new)
53
53
  end
54
54
  end
55
55
 
56
56
  def creation_parameters
57
57
  parameters = params.require(:user).permit(User.new_profile_parameters)
58
- parameters.merge(tracking_for_entity)
58
+ parameters.merge(tracking_for_entity).merge({ super_user: User.count < 1 })
59
59
  end
60
60
 
61
61
  def user_parameters
62
62
  sensitive = sensitive_parameters
63
63
  editable = User.profile_parameters + sensitive
64
64
  parameters = params.require(:user).permit(editable)
65
- filter_parameters parameters, sensitive
65
+ filter_parameters parameters.merge(profile_parameters), sensitive
66
66
  end
67
67
 
68
68
  def sensitive_parameters
@@ -74,9 +74,13 @@ class My::ProfilesController < ApplicationController
74
74
  end
75
75
 
76
76
  def profile_parameters
77
- params.require(:user_profile).permit(UserProfile.entity_parameters)
77
+ permitted = UserProfileHandler.allowed_parameters
78
+ dirty = params.require(:user_profile).permit(permitted)
79
+ { profile_data: UserProfileHandler.clean_parameters(dirty) }
78
80
  end
79
81
 
82
+ # @param [Hash] parameters
83
+ # @param [Hash] sensitive
80
84
  def filter_parameters(parameters, sensitive)
81
85
  sensitive.each { |parameter| parameters.except! parameter if parameter.blank? }
82
86
  parameters[:email_confirmed] = false if parameters[:email] && parameters[:email] != current_user.email
@@ -88,7 +92,9 @@ class My::ProfilesController < ApplicationController
88
92
  return_path = cookies['return_path'].to_s
89
93
  return_path = my_profile_path unless return_path[0] == '/'
90
94
  cookies.delete 'return_path', domain: :all
91
-
92
- redirect_to return_path, notice: t('my.profiles.create.success')
95
+
96
+ flash[:notice] = t('my.profiles.create.success')
97
+
98
+ form_processed_ok(return_path)
93
99
  end
94
100
  end
@@ -11,7 +11,7 @@ class PrivilegeGroupsController < AdminController
11
11
  def create
12
12
  @entity = PrivilegeGroup.new entity_parameters
13
13
  if @entity.save
14
- redirect_to admin_privilege_group_path(@entity)
14
+ redirect_to admin_privilege_group_path(id: @entity.id)
15
15
  else
16
16
  render :new, status: :bad_request
17
17
  end
@@ -24,7 +24,7 @@ class PrivilegeGroupsController < AdminController
24
24
  # patch /privilege_groups/:id
25
25
  def update
26
26
  if @entity.update entity_parameters
27
- redirect_to admin_privilege_group_path(@entity), notice: t('privilege_groups.update.success')
27
+ redirect_to admin_privilege_group_path(id: @entity.id), notice: t('privilege_groups.update.success')
28
28
  else
29
29
  render :edit, status: :bad_request
30
30
  end
@@ -8,7 +8,7 @@ class PrivilegesController < AdminController
8
8
  @entity = Privilege.new(creation_parameters)
9
9
  if @entity.save
10
10
  cache_relatives
11
- redirect_to admin_privilege_path(@entity)
11
+ redirect_to admin_privilege_path(id: @entity.id)
12
12
  else
13
13
  render :new, status: :bad_request
14
14
  end
@@ -22,7 +22,7 @@ class PrivilegesController < AdminController
22
22
  def update
23
23
  if @entity.update(entity_parameters)
24
24
  cache_relatives
25
- redirect_to admin_privilege_path(@entity), notice: t('privileges.update.success')
25
+ redirect_to admin_privilege_path(id: @entity.id), notice: t('privileges.update.success')
26
26
  else
27
27
  render :edit, status: :bad_request
28
28
  end
@@ -51,7 +51,7 @@ class PrivilegesController < AdminController
51
51
 
52
52
  def restrict_editing
53
53
  if @entity.locked?
54
- redirect_to admin_privilege_path(@entity), alert: t('privileges.edit.forbidden')
54
+ redirect_to admin_privilege_path(id: @entity.id), alert: t('privileges.edit.forbidden')
55
55
  end
56
56
  end
57
57
 
@@ -10,7 +10,7 @@ class StoredValuesController < AdminController
10
10
  def create
11
11
  @entity = StoredValue.new(entity_parameters)
12
12
  if @entity.save
13
- redirect_to admin_stored_value_path(@entity.id)
13
+ redirect_to admin_stored_value_path(id: @entity.id)
14
14
  else
15
15
  render :new, status: :bad_request
16
16
  end
@@ -23,7 +23,7 @@ class StoredValuesController < AdminController
23
23
  # patch /stored_values/:id
24
24
  def update
25
25
  if @entity.update(entity_parameters)
26
- redirect_to admin_stored_value_path(@entity.id), notice: t('stored_values.update.success')
26
+ redirect_to admin_stored_value_path(id: @entity.id), notice: t('stored_values.update.success')
27
27
  else
28
28
  render :edit, status: :bad_request
29
29
  end
@@ -10,7 +10,7 @@ class TokensController < AdminController
10
10
  def create
11
11
  @entity = Token.new(creation_parameters)
12
12
  if @entity.save
13
- redirect_to admin_token_path(@entity)
13
+ redirect_to admin_token_path(id: @entity.id)
14
14
  else
15
15
  render :new, status: :bad_request
16
16
  end
@@ -23,7 +23,7 @@ class TokensController < AdminController
23
23
  # patch /tokens/:id
24
24
  def update
25
25
  if @entity.update(entity_parameters)
26
- redirect_to admin_token_path(@entity), notice: t('tokens.update.success')
26
+ redirect_to admin_token_path(id: @entity.id), notice: t('tokens.update.success')
27
27
  else
28
28
  render :edit, status: :bad_request
29
29
  end
@@ -1,6 +1,14 @@
1
- class UsersController < AdminController
1
+ class UsersController < ApplicationController
2
+ before_action :restrict_access, except: [:check]
2
3
  before_action :set_entity, only: [:edit, :update, :destroy]
3
4
 
5
+ layout 'admin', except: :check
6
+
7
+ # post /users/check
8
+ def check
9
+ @entity = User.new(creation_parameters)
10
+ end
11
+
4
12
  # get /users/new
5
13
  def new
6
14
  @entity = User.new
@@ -10,10 +18,9 @@ class UsersController < AdminController
10
18
  def create
11
19
  @entity = User.new(creation_parameters)
12
20
  if @entity.save
13
- @entity.user_profile.update(profile_parameters)
14
- redirect_to admin_user_path(@entity.id), notice: t('users.create.success')
21
+ form_processed_ok(admin_user_path(id: @entity.id))
15
22
  else
16
- render :new, status: :bad_request
23
+ form_processed_with_error(:new)
17
24
  end
18
25
  end
19
26
 
@@ -24,10 +31,9 @@ class UsersController < AdminController
24
31
  # patch /users/:id
25
32
  def update
26
33
  if @entity.update(entity_parameters)
27
- @entity.user_profile.update(profile_parameters)
28
- redirect_to admin_user_path(@entity.id), notice: t('users.update.success')
34
+ form_processed_ok(admin_user_path(id: @entity.id))
29
35
  else
30
- render :edit, status: :bad_request
36
+ form_processed_with_error(:edit)
31
37
  end
32
38
  end
33
39
 
@@ -47,17 +53,27 @@ class UsersController < AdminController
47
53
 
48
54
  def set_entity
49
55
  @entity = User.find_by(id: params[:id])
56
+ if @entity.nil?
57
+ handle_http_404('Cannot find user')
58
+ end
50
59
  end
51
60
 
52
61
  def entity_parameters
53
- params.require(:user).permit(User.entity_parameters)
62
+ parameters = params.require(:user).permit(User.entity_parameters)
63
+ parameters.merge(profile_parameters)
54
64
  end
55
65
 
56
66
  def creation_parameters
57
- params.require(:user).permit(User.entity_parameters).merge(tracking_for_entity)
67
+ entity_parameters.merge(tracking_for_entity)
58
68
  end
59
69
 
60
70
  def profile_parameters
61
- params.require(:user_profile).permit(UserProfile.entity_parameters)
71
+ if params.key?(:user_profile)
72
+ permitted = UserProfileHandler.allowed_parameters
73
+ dirty = params.require(:user_profile).permit(permitted)
74
+ { profile_data: UserProfileHandler.clean_parameters(dirty) }
75
+ else
76
+ {}
77
+ end
62
78
  end
63
79
  end
@@ -59,12 +59,23 @@ module BiovisionHelper
59
59
  # @param [Hash] options
60
60
  def destroy_icon(entity, title = t(:delete), options = {})
61
61
  default = {
62
- method: :delete,
63
- data: { confirm: t(:are_you_sure), tootik: title, tootik_conf: 'danger' }
62
+ method: :delete,
63
+ data: { confirm: t(:are_you_sure), tootik: title, tootik_conf: 'danger' }
64
64
  }
65
65
  icon_with_link('biovision/base/icons/destroy.svg', entity, title, default.merge(options))
66
66
  end
67
67
 
68
+ # @param [String] path
69
+ # @param [String] title
70
+ # @param [Hash] options
71
+ def destroy_path_icon(path, title = t(:delete), options = {})
72
+ default = {
73
+ method: :delete,
74
+ data: { confirm: t(:are_you_sure), tootik: title, tootik_conf: 'danger' }
75
+ }
76
+ icon_with_link('biovision/base/icons/destroy.svg', path, title, default.merge(options))
77
+ end
78
+
68
79
  # @param [String|ApplicationRecord] path
69
80
  # @param [String] title
70
81
  # @param [Hash] options