openproject-token 1.0.2 → 2.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: d055c8358ab2666105256d7a71247b3f0235e32ceaa6fb5588fe3af7846213ce
4
- data.tar.gz: 2a9ca23046c2d5dd0d48ecaa232393b7598fe149bfacbb76eef5fdf6a435e741
3
+ metadata.gz: 5da90cc05359f099b94484c379973b4c4464b8f9ef7f6d20bdefba2b4fc61537
4
+ data.tar.gz: 5f87461bbf02ecf0d8c5663b4dba13ea9c511dbd807d8c3e15e4adfe5c040f57
5
5
  SHA512:
6
- metadata.gz: 1d051dd136b1ab29adcc0604098fd365c2039152a6f299a548dc95bfc53021a74c4a61ff81a914f723d6620c2fd646993942450ba466f07ad6d5e0266aa441e5
7
- data.tar.gz: fd21a30af2d6ee77bf8ce114ca0c95eeb3d8a656bcb3816bfdaa35b2a78d154843b13db896115f6dbd2f4d30e939b3aa900697b6a748e8e8f4b6c3fc1784ea86
6
+ metadata.gz: dd82c0f1815535f7e568d969a1c4e469beaf4d5470014c59496c12e2cd82edf0b9c6e6d9267cfa4b97ef9b6408a737f41fb1d8ae3cdb70c7353ae29f4e7cb940
7
+ data.tar.gz: ec350f3838ec36b45fb6d0671bac492abd0bf7b5975ced83f2c430b6148274e34d93907525830aa4c5dc44fc2e2182f4092d7bc818d11bfdcd906a77a5411eda
@@ -49,13 +49,15 @@ module OpenProject
49
49
  include ActiveModel::Validations
50
50
 
51
51
  attr_reader :version
52
- attr_accessor :subscriber, :mail
52
+ attr_accessor :subscriber, :mail, :company, :domain
53
53
  attr_accessor :starts_at, :issued_at, :expires_at
54
54
  attr_accessor :notify_admins_at, :notify_users_at, :block_changes_at
55
55
  attr_accessor :restrictions
56
56
 
57
57
  validates_presence_of :subscriber
58
58
  validates_presence_of :mail
59
+ validates_presence_of :company, allow_blank: true
60
+ validates_presence_of :domain, if: :validate_domain?
59
61
 
60
62
  validates_each(
61
63
  :starts_at, :issued_at, :expires_at, :notify_admins_at, :notify_users_at, :block_changes_at,
@@ -104,6 +106,11 @@ module OpenProject
104
106
  will_block_changes? && Date.today >= self.block_changes_at
105
107
  end
106
108
 
109
+ # tokens with no version or a version lower than 2.0 don't have the attributes company or domain
110
+ def validate_domain?
111
+ version && Gem::Version.new(version) >= domain_required_from_version
112
+ end
113
+
107
114
  def restricted?(key = nil)
108
115
  if key
109
116
  restricted? && restrictions.has_key?(key)
@@ -118,6 +125,8 @@ module OpenProject
118
125
  hash["version"] = self.version
119
126
  hash["subscriber"] = self.subscriber
120
127
  hash["mail"] = self.mail
128
+ hash["company"] = self.company
129
+ hash["domain"] = self.domain
121
130
 
122
131
  hash["issued_at"] = self.issued_at
123
132
  hash["starts_at"] = self.starts_at
@@ -146,18 +155,19 @@ module OpenProject
146
155
 
147
156
  def load_attributes(attributes)
148
157
  attributes = Hash[attributes.map { |k, v| [k.to_s, v] }]
158
+ version = attributes["version"].then { |v| v && Gem::Version.new(v) } || current_gem_version
149
159
 
150
- version = attributes["version"] || 1
151
- unless version && version == 1
160
+ if version > current_gem_version
152
161
  raise ArgumentError, "Version is too new"
153
162
  end
154
163
 
155
- @version = version
164
+ @version = version.to_s
156
165
  @subscriber = attributes["subscriber"]
157
166
  @mail = attributes["mail"]
167
+ @company = attributes["company"]
168
+ @domain = attributes["domain"]
158
169
 
159
- %w(starts_at issued_at expires_at
160
- notify_admins_at notify_users_at block_changes_at).each do |attr|
170
+ date_attribute_keys.each do |attr|
161
171
  value = attributes[attr]
162
172
  value = Date.parse(value) rescue nil if value.is_a?(String)
163
173
 
@@ -167,10 +177,23 @@ module OpenProject
167
177
  end
168
178
 
169
179
  restrictions = attributes["restrictions"]
180
+
170
181
  if restrictions && restrictions.is_a?(Hash)
171
182
  restrictions = Hash[restrictions.map { |k, v| [k.to_sym, v] }]
172
183
  @restrictions = restrictions
173
184
  end
174
185
  end
186
+
187
+ def date_attribute_keys
188
+ %w(starts_at issued_at expires_at notify_admins_at notify_users_at block_changes_at)
189
+ end
190
+
191
+ def current_gem_version
192
+ @current_gem_version ||= Gem::Version.new(OpenProject::Token::VERSION.to_s)
193
+ end
194
+
195
+ def domain_required_from_version
196
+ @domain_required_from_version ||= Gem::Version.new('2.0')
197
+ end
175
198
  end
176
199
  end
@@ -1,5 +1,5 @@
1
1
  module OpenProject
2
2
  class Token
3
- VERSION = "1.0.2"
3
+ VERSION = "2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openproject-token
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: '2.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenProject GmbH
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-05 00:00:00.000000000 Z
11
+ date: 2020-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: pry
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +67,7 @@ files:
53
67
  - lib/openproject-token.rb
54
68
  homepage: https://www.openproject.org
55
69
  licenses:
56
- - GPLv3
70
+ - GPL-3.0
57
71
  metadata: {}
58
72
  post_install_message:
59
73
  rdoc_options: []
@@ -70,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
84
  - !ruby/object:Gem::Version
71
85
  version: '0'
72
86
  requirements: []
73
- rubygems_version: 3.0.2
87
+ rubygems_version: 3.0.1
74
88
  signing_key:
75
89
  specification_version: 4
76
90
  summary: OpenProject EE token reader