ehsso 0.7.0 → 0.8.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: 2a9235f7ecdf6b9066a295eb8eb224d8fcb2142d0390eaed34418da407af51a8
4
- data.tar.gz: 9f99c1695b586f640f8f86eabe4d942806ce92adf02c046ddcd8bee3fe13a426
3
+ metadata.gz: 208742122ef1e438a89f71a9b42fdade0b41156ef23ece58d63d74efd92abd4c
4
+ data.tar.gz: 1384cee640caab6534e660cb502ffd7ae6a35a305d9f5d45bf0fe14efb1c9a5e
5
5
  SHA512:
6
- metadata.gz: 2d1185962049a41f2f075fce58e348c1275fd2bdb1014ee9652ff4ba3a3764c63a602e37b4453d9a18e4186027449de5f098345eba15a4b0881921ccaf36543c
7
- data.tar.gz: 69cf5da8ef34bda66ac1cc03ebd39033d35881207131c89ec5c077e08debb154b28fedb77ff882fd58b8007b327c5127d8e48fb1a11691ab7a3beb0e0bc0195a
6
+ metadata.gz: e194bdceb811f29a4c11582fee77d69b855480d5e0a82efeef4fea45dd0a04b819ebf7fa170d39e82509b4e4e4f35674e2a1232e508364dad9f7fb483ae0fce7
7
+ data.tar.gz: f37a33ec3e472fd979df10c2da3e71165df52027301f1ee4a05025d3119cbf954e60b51391fb44c0ef5695709ea18658364ccbc0b155bd5774f17b1e01097466
@@ -25,7 +25,7 @@ jobs:
25
25
 
26
26
  name: Ruby ${{ matrix.ruby }}
27
27
  steps:
28
- - uses: actions/checkout@v5
28
+ - uses: actions/checkout@v6
29
29
 
30
30
  - name: Set up Ruby
31
31
  uses: ruby/setup-ruby@v1
@@ -1,15 +1,20 @@
1
1
  name: 02 - Release
2
2
 
3
3
  on:
4
- workflow_dispatch:
4
+ push:
5
+ tags:
6
+ - 'v*'
5
7
 
6
8
  jobs:
7
9
  release:
8
10
  runs-on: ubuntu-latest
11
+ permissions:
12
+ id-token: write
13
+ contents: write
9
14
 
10
15
  steps:
11
16
  - name: Checkout current code
12
- uses: actions/checkout@v5
17
+ uses: actions/checkout@v6
13
18
 
14
19
  - name: Set up Ruby
15
20
  uses: ruby/setup-ruby@v1
@@ -19,14 +24,8 @@ jobs:
19
24
  bundler-cache: true
20
25
  cache-version: 1
21
26
 
22
- - name: Release to RubyGems
23
- env:
24
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25
- run: |
26
- git config --global user.email "thomas.steiner@ikey.ch"
27
- git config --global user.name "thomis"
28
- mkdir ~/.gem
29
- echo -e "---\n:rubygems_api_key: ${{ secrets.RUBYGEMS_API_KEY }}" > ~/.gem/credentials
30
- chmod 600 ~/.gem/credentials
31
- bundle exec rake release
32
- rm ~/.gem/credentials
27
+ - name: Build gem
28
+ run: gem build *.gemspec
29
+
30
+ - name: Push to Rubygems
31
+ uses: rubygems/release-gem@v1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog of ehsso
2
2
 
3
+ ## 0.8.0 / 2026-06-10
4
+
5
+ * Strip whitespace from HTTP_NIBR* header values (reference, first name, last name, email)
6
+ * Reject whitespace-only reference header as invalid
7
+ * Use end_with? for role method checking in method_missing and respond_to_missing?
8
+ * Fix typo in error message ("porperties" -> "properties")
9
+
10
+ ## 0.7.1 / 2025-11-09
11
+
12
+ * Enable Trusted Publishing
13
+
3
14
  ## 0.7.0 / 2025-10-22
4
15
 
5
16
  * Fix Rails 8.1 compatibility - make Rails engine loading conditional
data/README.md CHANGED
@@ -172,6 +172,12 @@ class ApplicationController < ActionController::Base
172
172
  end
173
173
  ```
174
174
 
175
+ ## Publishing
176
+
177
+ This project uses [Trusted Publishing](https://guides.rubygems.org/trusted-publishing/) to securely publish gems to RubyGems.org. Trusted Publishing eliminates the need for long-lived API tokens by using OpenID Connect (OIDC) to establish a trusted relationship between GitHub Actions and RubyGems.org.
178
+
179
+ With Trusted Publishing configured, gem releases are automatically published to RubyGems when the release workflow runs, providing a more secure and streamlined publishing process.
180
+
175
181
  ## Contributing
176
182
 
177
183
  Bug reports and pull requests are welcome on GitHub at https://github.com/thomis/ehsso.
data/ehsso.gemspec CHANGED
@@ -22,7 +22,6 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.required_ruby_version = ">= 3.1"
24
24
 
25
- spec.add_development_dependency "bundler", "~> 2.3"
26
25
  spec.add_development_dependency "rake", "~> 13.0"
27
26
  spec.add_development_dependency "rspec", "~> 3.12"
28
27
  spec.add_development_dependency "rails", ">= 6.1"
@@ -31,5 +30,5 @@ Gem::Specification.new do |spec|
31
30
 
32
31
  spec.add_runtime_dependency("typhoeus", "~> 1.5")
33
32
  spec.add_runtime_dependency("logger", "~> 1.7")
34
- spec.add_runtime_dependency("bigdecimal", "~> 3.2")
33
+ spec.add_runtime_dependency("bigdecimal", "~> 4.0")
35
34
  end
data/lib/ehsso/person.rb CHANGED
@@ -32,13 +32,11 @@ module Ehsso
32
32
 
33
33
  # you can use methods like guest?, user?, operator?, administrator? etc.
34
34
  def method_missing(method)
35
- raise "Method [#{method}] not defined or allowed" unless method[-1] == "?"
35
+ raise "Method [#{method}] not defined or allowed" unless method.end_with?("?")
36
36
  @roles.include?(method[0..-2].upcase)
37
37
  end
38
38
 
39
- def respond_to_missing?(method, include_private = false)
40
- true if method[-1] == "?"
41
- end
39
+ def respond_to_missing?(method, include_private = false) = method.end_with?("?")
42
40
 
43
41
  def full_name
44
42
  return nil if last_name.nil? && first_name.nil?
@@ -49,19 +47,23 @@ module Ehsso
49
47
  person = Ehsso::Person.new
50
48
 
51
49
  # reference (mandatory)
52
- if header["HTTP_NIBR521"].nil? || header["HTTP_NIBR521"].size == 0
53
- person.last_error_message = "Unable to extract HTTP_NIBR* porperties from request header"
50
+ # to_s save in case of nil,
51
+ # strip removes spaces around the string
52
+ reference_value = header["HTTP_NIBR521"].to_s.strip
53
+ if reference_value.empty?
54
+ person.last_error_message = "Unable to extract HTTP_NIBR* properties from request header"
54
55
  return person
55
56
  end
56
57
 
57
- person.reference = header["HTTP_NIBR521"].downcase
58
+ person.reference = reference_value.downcase
58
59
 
59
60
  [
60
61
  [:first_name=, "HTTP_NIBRFIRST"],
61
62
  [:last_name=, "HTTP_NIBRLAST"],
62
63
  [:email=, "HTTP_NIBREMAIL"]
63
64
  ].each do |method, key|
64
- person.send(method, header[key]) if header[key] && header[key].strip.size > 0
65
+ value = header[key].to_s.strip
66
+ person.send(method, value) unless value.empty?
65
67
  end
66
68
 
67
69
  person
data/lib/ehsso/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ehsso
2
- VERSION = "0.7.0"
2
+ VERSION = "0.8.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ehsso
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Steiner
@@ -9,20 +9,6 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
- - !ruby/object:Gem::Dependency
13
- name: bundler
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - "~>"
17
- - !ruby/object:Gem::Version
18
- version: '2.3'
19
- type: :development
20
- prerelease: false
21
- version_requirements: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - "~>"
24
- - !ruby/object:Gem::Version
25
- version: '2.3'
26
12
  - !ruby/object:Gem::Dependency
27
13
  name: rake
28
14
  requirement: !ruby/object:Gem::Requirement
@@ -127,14 +113,14 @@ dependencies:
127
113
  requirements:
128
114
  - - "~>"
129
115
  - !ruby/object:Gem::Version
130
- version: '3.2'
116
+ version: '4.0'
131
117
  type: :runtime
132
118
  prerelease: false
133
119
  version_requirements: !ruby/object:Gem::Requirement
134
120
  requirements:
135
121
  - - "~>"
136
122
  - !ruby/object:Gem::Version
137
- version: '3.2'
123
+ version: '4.0'
138
124
  description: EH Single Sign On
139
125
  email:
140
126
  - thomas.steiner@ikey.ch