blacklight-spotlight 2.10.0 → 2.11.0

Sign up to get free protection for your applications and to get access to all the features.
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