blacklight-spotlight 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2148d0879e24d68085e54c6fb9569af9900383d7bdb12c00f1568cf846e6b3c0
4
- data.tar.gz: e2ff46720e4f722e64a47eeb29ceaf4cc7a981731942134b81ae0f94eb376b02
3
+ metadata.gz: 39211a3860e438e3c2e28f6bacc050376b3ab2d27e541050b76a59a17848a553
4
+ data.tar.gz: 6902e8411a19aa2832a6a839bab19b74782644e35359d54f3151df6e898c1333
5
5
  SHA512:
6
- metadata.gz: 9a8590c2c12ab0c5df2e61ea8e5608a465564dd33ee7b6fb849578f98fb5aa5116b7706240ec2955065b6e0d1c65d1db4fa0837e2d73083fc4a0cf06cff7c0b6
7
- data.tar.gz: 290494323ae7ccb37ccfd9e80df582df82814f6129025bc95d42dad2611ed7d105cb3cdc0c1cd40239edb05aa3dff4177ee784980209e8100cb0bf82351aba58
6
+ metadata.gz: dfdcfb3f10e852a74e960f51cf5b360897dac4279bfc8c0cede9a869595e49688ea596a802b0227b11c3459fc30d227de59e3210e9baa14e23a0813804c6a227
7
+ data.tar.gz: e57d609f2125a8042835d0d78950c67b94992f22ba1e38664301acc05bb9617374b513ce654b9b73b0a883719d2dec5b4e337dfe8908be1e71969dc7ae1b2b11
@@ -6,6 +6,8 @@ module Spotlight
6
6
  class AdminUsersController < Spotlight::ApplicationController
7
7
  before_action :authenticate_user!
8
8
  before_action :load_site
9
+ before_action :load_users
10
+
9
11
  load_and_authorize_resource :site, class: 'Spotlight::Site'
10
12
 
11
13
  def index; end
@@ -17,6 +19,19 @@ module Spotlight
17
19
  else
18
20
  flash[:error] = t('spotlight.admin_users.create.error')
19
21
  end
22
+
23
+ redirect_to spotlight.admin_users_path
24
+ end
25
+
26
+ def update
27
+ user = Spotlight::Engine.user_class.find(params[:id])
28
+ if user
29
+ Spotlight::Role.create(user_key: user.email, role: 'admin', resource: @site).save
30
+ flash[:notice] = t('spotlight.admin_users.create.success')
31
+ else
32
+ flash[:error] = t('spotlight.admin_users.create.error')
33
+ end
34
+
20
35
  redirect_to spotlight.admin_users_path
21
36
  end
22
37
 
@@ -32,6 +47,10 @@ module Spotlight
32
47
 
33
48
  private
34
49
 
50
+ def load_users
51
+ @users ||= ::User.all.reject(&:guest?)
52
+ end
53
+
35
54
  def load_site
36
55
  @site ||= Spotlight::Site.instance
37
56
  end
@@ -76,7 +76,8 @@ module Spotlight
76
76
  def iiif_url
77
77
  Spotlight::Engine.config.iiif_url_helpers.info_url(
78
78
  uploaded_resource.upload.id,
79
- host: controller.request.host_with_port
79
+ host: controller.request.host_with_port,
80
+ protocol: controller.request.protocol
80
81
  ).sub(%r{/info\.json\Z}, '')
81
82
  end
82
83
  end
@@ -1,7 +1,7 @@
1
1
  <div id="content" class="col-md-9 admin-users">
2
2
  <%= page_title(t('.section'), t('.page_title')) %>
3
3
  <%= bootstrap_form_for Spotlight::Engine.user_class.new, url: spotlight.admin_users_path do |f| %>
4
- <p class="instructions"><%= t :'.instructions' %></p>
4
+ <h3 class="instructions"><%= t :'.instructions' %></h3>
5
5
  <table class="table table-striped ">
6
6
  <thead>
7
7
  <tr>
@@ -43,20 +43,50 @@
43
43
 
44
44
  <div class="form-actions">
45
45
  <div class="primary-actions">
46
- <%= link_to(t('.add'), 'javascript:;', class: 'btn btn-default', data: { behavior: 'new-user' }) %>
46
+ <%= link_to(t('.create'), 'javascript:;', class: 'btn btn-default', data: { behavior: 'new-user' }) %>
47
47
  </div>
48
48
  </div>
49
- <% end %>
50
49
 
51
- <p class="instructions"><%= t :'.all_users' %></p>
52
- <div id="all_users" class="well well-sm">
50
+ <h3 class="instructions"><%= t :'.admins_curators' %></h3>
51
+ <div id="admins_curators" class="well well-sm">
53
52
  <div class='btn-toolbar pull-right'>
54
- <button class="btn btn-xs btn-default copy-email-addresses" data-clipboard-target="#all_users">
55
- <%= t('.copy') %>
56
- </button>
53
+ <button class="btn btn-xs btn-default copy-email-addresses" data-clipboard-target="#admins_curators">
54
+ <%= t('.copy') %>
55
+ </button>
57
56
  </div>
58
57
  <%= Spotlight::Engine.user_class.with_roles.pluck(:email).sort.join(', ') %>
59
- </div>
58
+ </div>
59
+
60
+ <h3 class="instructions"><%= t :'.all_users' %></h3>
61
+ <table class="table table-striped ">
62
+ <thead>
63
+ <tr>
64
+ <th><%= Spotlight::Engine.user_class.human_attribute_name(:email) %></th>
65
+ <th><%= Spotlight::Engine.user_class.human_attribute_name(:role) %></th>
66
+ </tr>
67
+ </thead>
68
+ <tbody class="table">
69
+ <% @users.each do |user| %>
70
+ <tr>
71
+ <td class="<%= 'invite-pending' if user.invite_pending? %>">
72
+ <%= user.email %>
73
+ <span class='label label-warning pending-label'><%= t('.pending') %></span>
74
+ </td>
75
+ <td class="role">
76
+ <%= user.roles.map { |r| r.role.titleize }.uniq.join(", ") %>
77
+ </td>
78
+ <td>
79
+ <% if user.superadmin? %>
80
+ <%= link_to(t('.destroy'), admin_user_path(user), method: :delete, class: 'btn btn-danger pull-right') unless user == current_user %>
81
+ <% else %>
82
+ <%= link_to(t('.update'), admin_user_path(user), method: :patch, class: 'btn btn-default pull-right') %>
83
+ <% end %>
84
+ </td>
85
+ </tr>
86
+ <% end %>
87
+ </tbody>
88
+ </table>
89
+ <% end %>
60
90
  </div>
61
91
 
62
92
  <aside class="col-md-3">
@@ -172,20 +172,22 @@ en:
172
172
  admin_users:
173
173
  create:
174
174
  error: There was a problem adding the user as an exhibits adminstrator
175
- success: Added user as an exhibits adminstrator
175
+ success: Added user as an adminstrator
176
176
  destroy:
177
177
  error: There was a problem removing the user from the site adminstrator role
178
178
  success: User removed from site adminstrator role
179
179
  index:
180
- add: Add new administrator
181
- all_users: Administrators and curators of all exhibits
180
+ admins_curators: Administrators and curators of all exhibits
181
+ all_users: All registered users
182
182
  copy: Copy
183
- destroy: Remove from role
183
+ create: Add new administrator
184
+ destroy: Remove from admin role
184
185
  instructions: Existing exhibits administrators
185
- page_title: Manage administrators
186
+ page_title: Manage users
186
187
  pending: pending
187
188
  save: Add role
188
189
  section: Manage exhibits
190
+ update: Make user an administrator
189
191
  appearances:
190
192
  edit:
191
193
  header: Appearance
data/config/routes.rb CHANGED
@@ -16,7 +16,7 @@ Spotlight::Engine.routes.draw do
16
16
 
17
17
  get '/exhibits/edit', to: 'sites#edit_exhibits', as: 'edit_site_exhibits'
18
18
 
19
- resources :admin_users, only: [:index, :create, :destroy]
19
+ resources :admin_users, only: [:index, :create, :update, :destroy]
20
20
 
21
21
  resources :exhibits, path: '/', except: [:show] do
22
22
  member do
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spotlight
4
- VERSION = '2.10.0'
4
+ VERSION = '2.11.0'
5
5
  end
@@ -35,5 +35,15 @@ RSpec.describe Spotlight::AdminUsersController, type: :controller do
35
35
  expect(Spotlight::Site.instance.roles.where(user_id: user.id)).to be_none
36
36
  end
37
37
  end
38
+
39
+ describe 'PATCH update' do
40
+ let(:non_admin) { FactoryBot.create(:exhibit_visitor) }
41
+ it 'adds the site admin role to the given user' do
42
+ patch :update, params: { id: non_admin.id }
43
+ expect(response).to redirect_to(admin_users_path)
44
+ expect(flash[:notice]).to eq 'Added user as an adminstrator'
45
+ expect(non_admin.roles.map(&:role)).to eq ['admin']
46
+ end
47
+ end
38
48
  end
39
49
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe 'Site admin management', js: true do
3
+ describe 'Site users management', js: true do
4
4
  let(:user) { FactoryBot.create(:site_admin) }
5
5
  let!(:existing_user) { FactoryBot.create(:exhibit_visitor) }
6
6
  let!(:exhibit_admin) { FactoryBot.create(:exhibit_admin) }
@@ -17,25 +17,14 @@ describe 'Site admin management', js: true do
17
17
 
18
18
  describe 'copy email addresses' do
19
19
  it 'displays only email addresses of users w/ roles' do
20
- expect(page).to have_css('div#all_users', text: user.email)
21
- expect(page).to have_css('div#all_users', text: exhibit_admin.email)
22
- expect(page).to have_css('div#all_users', text: exhibit_curator.email)
23
- expect(page).not_to have_css('div#all_users', text: existing_user.email)
20
+ expect(page).to have_css('div#admins_curators', text: user.email)
21
+ expect(page).to have_css('div#admins_curators', text: exhibit_admin.email)
22
+ expect(page).to have_css('div#admins_curators', text: exhibit_curator.email)
23
+ expect(page).not_to have_css('div#admins_curators', text: existing_user.email)
24
24
  expect(page).to have_css('button.copy-email-addresses')
25
25
  end
26
26
  end
27
27
 
28
- it 'allows for existing users to be added as site adminstrators' do
29
- expect(page).not_to have_css('td', text: existing_user.email)
30
- click_link 'Add new administrator'
31
-
32
- fill_in 'user_email', with: existing_user.email
33
- click_button 'Add role'
34
-
35
- expect(page).to have_content('Added user as an exhibits adminstrator')
36
- expect(page).to have_css('td', text: existing_user.email)
37
- end
38
-
39
28
  it 'allows non-existing users to be invited' do
40
29
  click_link 'Add new administrator'
41
30
 
@@ -55,15 +44,13 @@ describe 'Site admin management', js: true do
55
44
 
56
45
  expect(page).to have_css(:td, text: 'not-an-admin@example.com')
57
46
 
58
- expect(page).to have_css(:a, text: 'Remove from role', count: 2)
47
+ expect(page).to have_css(:a, text: 'Remove from admin role', count: 4)
59
48
  within(all('table tbody tr').last) do
60
- click_link 'Remove from role'
49
+ click_link 'Remove from admin role'
61
50
  end
62
51
 
63
52
  expect(page).to have_content 'User removed from site adminstrator role'
64
- expect(page).to have_css(:a, text: 'Remove from role', count: 1)
65
-
66
- expect(page).not_to have_css(:td, text: 'not-an-admin@example.com')
53
+ expect(page).to have_css(:a, text: 'Remove from admin role', count: 2)
67
54
  end
68
55
 
69
56
  it 'sends an invitation email to users who do not exist' do
@@ -82,6 +69,6 @@ describe 'Site admin management', js: true do
82
69
 
83
70
  expect(page).to have_css('td', text: user.email)
84
71
  # There are two users, the original site admin and our admin user so only one button
85
- expect(page).to have_css(:a, text: 'Remove from role', count: 1)
72
+ expect(page).to have_css(:a, text: 'Remove from admin role', count: 2)
86
73
  end
87
74
  end
@@ -119,7 +119,8 @@ describe Spotlight::IiifManifestPresenter do
119
119
 
120
120
  describe '#iiif_url' do
121
121
  it 'returns the info_url from the Riiif engine routes, minus the trailing .json' do
122
- expect(subject.send(:iiif_url)).to eq('http://localhost:3000/images/2')
122
+ controller.request.stub(:protocol).and_return('https')
123
+ expect(subject.send(:iiif_url)).to eq('https://localhost:3000/images/2')
123
124
  end
124
125
  end
125
126
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blacklight-spotlight
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.10.0
4
+ version: 2.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2019-10-17 00:00:00.000000000 Z
14
+ date: 2019-10-23 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -1407,8 +1407,8 @@ files:
1407
1407
  - spec/features/main_navigation_spec.rb
1408
1408
  - spec/features/metadata_admin_spec.rb
1409
1409
  - spec/features/report_a_problem_spec.rb
1410
- - spec/features/site_admin_management_spec.rb
1411
1410
  - spec/features/site_masthead_spec.rb
1411
+ - spec/features/site_users_management_spec.rb
1412
1412
  - spec/features/slideshow_spec.rb
1413
1413
  - spec/features/translation_scope_spec.rb
1414
1414
  - spec/fixtures/800x600.png
@@ -1643,7 +1643,6 @@ test_files:
1643
1643
  - spec/features/exhibit_themes_spec.rb
1644
1644
  - spec/features/exhibits_index_spec.rb
1645
1645
  - spec/features/add_items_spec.rb
1646
- - spec/features/site_admin_management_spec.rb
1647
1646
  - spec/features/slideshow_spec.rb
1648
1647
  - spec/features/browse_category_admin_spec.rb
1649
1648
  - spec/features/item_admin_spec.rb
@@ -1660,6 +1659,7 @@ test_files:
1660
1659
  - spec/features/add_custom_field_metadata_spec.rb
1661
1660
  - spec/features/metadata_admin_spec.rb
1662
1661
  - spec/features/exhibit_masthead_spec.rb
1662
+ - spec/features/site_users_management_spec.rb
1663
1663
  - spec/features/exhibits/add_tags_spec.rb
1664
1664
  - spec/features/exhibits/administration_spec.rb
1665
1665
  - spec/features/exhibits/custom_metadata_fields_spec.rb