hyrax 2.5.0 → 2.5.1
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 +4 -4
- data/README.md +2 -3
- data/app/controllers/hyrax/dashboard/collections_controller.rb +13 -2
- data/lib/hyrax/version.rb +1 -1
- data/spec/controllers/hyrax/dashboard/collections_controller_spec.rb +44 -1
- data/template.rb +1 -1
- metadata +3 -5
- data/.travis.yml +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52ca5db4f8ce55b87305b9bfbbbe4bfc7464958f5070e3cb4911f04feed87352
|
4
|
+
data.tar.gz: 4f9977600707f112927aed03cc8f985f7b125ca04d13344a3effb66350755ca2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea378dc6fb860157cf4330ed9d82d915123c89da7db61b44412fe44fc18da317806ad0716d08fec07d8b98cec963531607b828a6fab1a771a0576e2d8e649e52
|
7
|
+
data.tar.gz: 304be0cc47238943179bd32d1d843c7a7a7413c4daf4bcc58d9cdba5fcdb7a024e5cb4e7f55b4656872c4f352a36533b5f6d05b21cb6441ce1cdc084c9838d5c
|
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|

|
2
2
|
|
3
3
|
Code: [](http://badge.fury.io/rb/hyrax)
|
4
|
-
[](https://travis-ci.org/samvera/hyrax)
|
5
4
|
[](https://circleci.com/gh/samvera/hyrax)
|
6
5
|
[](https://coveralls.io/github/samvera/hyrax?branch=master)
|
7
6
|
[](https://codeclimate.com/github/samvera/hyrax)
|
@@ -163,7 +162,7 @@ NOTE: The steps need to be done in order to create a new Hyrax based app.
|
|
163
162
|
Generate a new Rails application using the template.
|
164
163
|
|
165
164
|
```
|
166
|
-
rails _5.1.6_ new my_app -m https://raw.githubusercontent.com/samvera/hyrax/v2.5.
|
165
|
+
rails _5.1.6_ new my_app -m https://raw.githubusercontent.com/samvera/hyrax/v2.5.1/template.rb
|
167
166
|
```
|
168
167
|
|
169
168
|
Generating a new Rails application using Hyrax's template above takes cares of a number of steps for you, including:
|
@@ -326,7 +325,7 @@ If you'd like to help the development effort and you're not sure where to get st
|
|
326
325
|
|
327
326
|
# Development
|
328
327
|
|
329
|
-
The [Hyrax Development Guide](https://github.com/samvera/hyrax/wiki/Hyrax-Development-Guide) is for people who want to modify Hyrax itself, not an application that uses Hyrax.
|
328
|
+
The [Hyrax Development Guide](https://github.com/samvera/hyrax/wiki/Hyrax-Development-Guide) is for people who want to modify Hyrax itself, not an application that uses Hyrax. See especially the [Quick Start](https://github.com/samvera/hyrax/wiki/Hyrax-Development-Guide#quick-start-for-hyrax-development) guide and instructions for running the [Hyrax test suite](https://github.com/samvera/hyrax/wiki/Hyrax-Development-Guide#run-the-test-suite).
|
330
329
|
|
331
330
|
## Reporting Security Issues
|
332
331
|
|
@@ -279,10 +279,10 @@ module Hyrax
|
|
279
279
|
public_files = []
|
280
280
|
uploaded_file_ids.each_with_index do |ufi, i|
|
281
281
|
if ufi.include?('public')
|
282
|
-
update_logo_info(ufi, params["alttext"][i], params["linkurl"][i])
|
282
|
+
update_logo_info(ufi, params["alttext"][i], verify_linkurl(params["linkurl"][i]))
|
283
283
|
public_files << ufi
|
284
284
|
else # brand new one, insert in the database
|
285
|
-
logo_info = create_logo_info(ufi, params["alttext"][i], params["linkurl"][i])
|
285
|
+
logo_info = create_logo_info(ufi, params["alttext"][i], verify_linkurl(params["linkurl"][i]))
|
286
286
|
public_files << logo_info.local_path
|
287
287
|
end
|
288
288
|
end
|
@@ -458,6 +458,17 @@ module Hyrax
|
|
458
458
|
def params_for_query
|
459
459
|
params.merge(q: params[:cq])
|
460
460
|
end
|
461
|
+
|
462
|
+
# Only accept HTTP|HTTPS urls;
|
463
|
+
# @return <String> the url
|
464
|
+
def verify_linkurl(linkurl)
|
465
|
+
url = Loofah.scrub_fragment(linkurl, :prune).to_s
|
466
|
+
url if valid_url?(url)
|
467
|
+
end
|
468
|
+
|
469
|
+
def valid_url?(url)
|
470
|
+
(url =~ URI.regexp(['http', 'https']))
|
471
|
+
end
|
461
472
|
end
|
462
473
|
end
|
463
474
|
end
|
data/lib/hyrax/version.rb
CHANGED
@@ -82,7 +82,7 @@ RSpec.describe Hyrax::Dashboard::CollectionsController, :clean_repo do
|
|
82
82
|
}
|
83
83
|
|
84
84
|
expect(assigns[:collection].member_objects).to eq [asset1]
|
85
|
-
asset_results = ActiveFedora::SolrService.instance.conn.get "select", params: { fq: ["id:\"#{asset1.id}\""], fl: ['id',
|
85
|
+
asset_results = ActiveFedora::SolrService.instance.conn.get "select", params: { fq: ["id:\"#{asset1.id}\""], fl: ['id', ActiveFedora.index_field_mapper.solr_name(:collection)] }
|
86
86
|
expect(asset_results["response"]["numFound"]).to eq 1
|
87
87
|
doc = asset_results["response"]["docs"].first
|
88
88
|
expect(doc["id"]).to eq asset1.id
|
@@ -294,6 +294,49 @@ RSpec.describe Hyrax::Dashboard::CollectionsController, :clean_repo do
|
|
294
294
|
|
295
295
|
expect(CollectionBrandingInfo.where(collection_id: collection.id, role: "logo", alt_text: "Logo alt Text", target_url: "http://abc.com").where("local_path LIKE '%logo.gif'")).to exist
|
296
296
|
end
|
297
|
+
|
298
|
+
context 'where the linkurl is not a valid http|http link' do
|
299
|
+
it "does not save linkurl containing html; target_url is empty" do
|
300
|
+
val = double(["/public/logo.gif"])
|
301
|
+
allow(val).to receive(:file_url).and_return("/public/logo.gif")
|
302
|
+
allow(Hyrax::UploadedFile).to receive(:find).with("1").and_return(val)
|
303
|
+
|
304
|
+
allow(File).to receive(:split).with(any_args).and_return(["logo.gif"])
|
305
|
+
allow(FileUtils).to receive(:cp).with(any_args).and_return(nil)
|
306
|
+
|
307
|
+
put :update, params: { id: collection, logo_files: [1], alttext: ["Logo alt Text"], linkurl: ["<script>remove_me</script>"], collection: { creator: ['Emily'] }, update_collection: true }
|
308
|
+
collection.reload
|
309
|
+
|
310
|
+
expect(
|
311
|
+
CollectionBrandingInfo.where(
|
312
|
+
collection_id: collection.id,
|
313
|
+
role: "logo",
|
314
|
+
alt_text: "Logo alt Text",
|
315
|
+
target_url: "<script>remove_me</script>"
|
316
|
+
).where("target_url LIKE '%remove_me%)'")
|
317
|
+
).not_to exist
|
318
|
+
end
|
319
|
+
|
320
|
+
it "does not save linkurl containing dodgy protocol; target_url is empty" do
|
321
|
+
val = double(["/public/logo.gif"])
|
322
|
+
allow(val).to receive(:file_url).and_return("/public/logo.gif")
|
323
|
+
allow(Hyrax::UploadedFile).to receive(:find).with("1").and_return(val)
|
324
|
+
|
325
|
+
allow(File).to receive(:split).with(any_args).and_return(["logo.gif"])
|
326
|
+
allow(FileUtils).to receive(:cp).with(any_args).and_return(nil)
|
327
|
+
|
328
|
+
put :update, params: { id: collection, logo_files: [1], alttext: ["Logo alt Text"], linkurl: ['javascript:alert("remove_me")'], collection: { creator: ['Emily'] }, update_collection: true }
|
329
|
+
collection.reload
|
330
|
+
expect(
|
331
|
+
CollectionBrandingInfo.where(
|
332
|
+
collection_id: collection.id,
|
333
|
+
role: "logo",
|
334
|
+
alt_text: "Logo alt Text",
|
335
|
+
target_url: 'javascript:alert("remove_me")'
|
336
|
+
).where("target_url LIKE '%remove_me%)'")
|
337
|
+
).not_to exist
|
338
|
+
end
|
339
|
+
end
|
297
340
|
end
|
298
341
|
end
|
299
342
|
|
data/template.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyrax
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Coyne
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2019-
|
17
|
+
date: 2019-05-29 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: rails
|
@@ -1100,7 +1100,6 @@ files:
|
|
1100
1100
|
- ".rubocop.yml"
|
1101
1101
|
- ".rubocop_fixme.yml"
|
1102
1102
|
- ".scss-lint.yml"
|
1103
|
-
- ".travis.yml"
|
1104
1103
|
- CODE_OF_CONDUCT.md
|
1105
1104
|
- Gemfile
|
1106
1105
|
- LICENSE
|
@@ -3079,8 +3078,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
3079
3078
|
- !ruby/object:Gem::Version
|
3080
3079
|
version: '0'
|
3081
3080
|
requirements: []
|
3082
|
-
|
3083
|
-
rubygems_version: 2.7.9
|
3081
|
+
rubygems_version: 3.0.3
|
3084
3082
|
signing_key:
|
3085
3083
|
specification_version: 4
|
3086
3084
|
summary: Hyrax is a front-end based on the robust Samvera framework, providing a user
|
data/.travis.yml
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
sudo: required
|
3
|
-
dist: trusty
|
4
|
-
|
5
|
-
addons:
|
6
|
-
apt:
|
7
|
-
packages:
|
8
|
-
- chromium-chromedriver
|
9
|
-
cache:
|
10
|
-
bundler: true
|
11
|
-
|
12
|
-
before_install:
|
13
|
-
- gem update --system
|
14
|
-
- gem install bundler
|
15
|
-
- google-chrome-stable --headless --disable-gpu --no-sandbox --remote-debugging-port=9222 http://localhost &
|
16
|
-
|
17
|
-
rvm:
|
18
|
-
- 2.5.0
|
19
|
-
|
20
|
-
env:
|
21
|
-
global:
|
22
|
-
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true
|
23
|
-
- ENGINE_CART_RAILS_OPTIONS='--skip-git --skip-bundle --skip-listen --skip-spring --skip-yarn --skip-keeps --skip-action-cable --skip-coffee --skip-puma --skip-test'
|
24
|
-
# Travis should check every minor version in a range of supported versions, because
|
25
|
-
# rails does not follow sem-ver conventions, see http://guides.rubyonrails.org/maintenance_policy.html
|
26
|
-
# It should be sufficient to test only the latest of the patch versions for a minor version, they
|
27
|
-
# should be compatible across patch versions (only bug fixes are released in patch versions).
|
28
|
-
matrix:
|
29
|
-
- "RAILS_VERSION=5.1.4"
|
30
|
-
- "RAILS_VERSION=5.0.6"
|
31
|
-
|
32
|
-
services:
|
33
|
-
- redis-server
|
34
|
-
before_script:
|
35
|
-
- jdk_switcher use oraclejdk8
|
36
|
-
- ln -s /usr/lib/chromium-browser/chromedriver ~/bin/chromedriver
|