openproject-token 1.0.2 → 2.1.2
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/lib/open_project/token.rb +58 -9
- data/lib/open_project/token/version.rb +1 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ed575580b33d7177820ffda871a4fd406f8fd43140703c1aad12ebcdbddde8c
|
4
|
+
data.tar.gz: e12c8de3670fd3088cfdca2d269dfd421ce64fc0a915d55ee0963519c62f81c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d7598d1e1190514985bcfc5c61377aac11fa6fff26a9d7acb3464436a1a7ac1cf3efc4d01eea6fcb8756025189458a6cf00c7e2d07721f245a1ce2378651037
|
7
|
+
data.tar.gz: 57d526430d85dda036614a71352e7bf677569f679e5c8314a42ff82411c033acbc7d17abd5d1500c4aaedbb9b9c622557152ae01eef503b2df1c8abe4e59fbb7
|
data/lib/open_project/token.rb
CHANGED
@@ -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
|
@@ -147,17 +156,13 @@ module OpenProject
|
|
147
156
|
def load_attributes(attributes)
|
148
157
|
attributes = Hash[attributes.map { |k, v| [k.to_s, v] }]
|
149
158
|
|
150
|
-
version = attributes
|
151
|
-
unless version && version == 1
|
152
|
-
raise ArgumentError, "Version is too new"
|
153
|
-
end
|
154
|
-
|
155
|
-
@version = version
|
159
|
+
@version = read_version attributes
|
156
160
|
@subscriber = attributes["subscriber"]
|
157
161
|
@mail = attributes["mail"]
|
162
|
+
@company = attributes["company"]
|
163
|
+
@domain = attributes["domain"]
|
158
164
|
|
159
|
-
|
160
|
-
notify_admins_at notify_users_at block_changes_at).each do |attr|
|
165
|
+
date_attribute_keys.each do |attr|
|
161
166
|
value = attributes[attr]
|
162
167
|
value = Date.parse(value) rescue nil if value.is_a?(String)
|
163
168
|
|
@@ -167,10 +172,54 @@ module OpenProject
|
|
167
172
|
end
|
168
173
|
|
169
174
|
restrictions = attributes["restrictions"]
|
175
|
+
|
170
176
|
if restrictions && restrictions.is_a?(Hash)
|
171
177
|
restrictions = Hash[restrictions.map { |k, v| [k.to_sym, v] }]
|
172
178
|
@restrictions = restrictions
|
173
179
|
end
|
174
180
|
end
|
181
|
+
|
182
|
+
##
|
183
|
+
# Reads the version from the given attributes hash.
|
184
|
+
# Besides the usual values it allows for a special value `-1`.
|
185
|
+
# This is then results in the version being `nil` specifically rather than
|
186
|
+
# the current gem version by default.
|
187
|
+
#
|
188
|
+
# This way the generated token will get what ever version the importing party
|
189
|
+
# has. This is important due to a bug in openproject-token 1.x where any version
|
190
|
+
# other than `nil` (or the integer literal 1) results in a "Version is too new" error.
|
191
|
+
# This affects all OpenProject installations with a version older than 10.6
|
192
|
+
# which will run into internal server errors trying to activate their Enterprise
|
193
|
+
# tokens due to this.
|
194
|
+
#
|
195
|
+
# Generating tokens with version `-1` prevents that.
|
196
|
+
#
|
197
|
+
# @param attr [Hash] Parsed token attributes.
|
198
|
+
def read_version(attr)
|
199
|
+
value = attr["version"]
|
200
|
+
version = nil
|
201
|
+
|
202
|
+
if value.present? && value.to_s != "-1"
|
203
|
+
version = Gem::Version.new value
|
204
|
+
|
205
|
+
if version > current_gem_version
|
206
|
+
raise ArgumentError, "Version is too new"
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
version
|
211
|
+
end
|
212
|
+
|
213
|
+
def date_attribute_keys
|
214
|
+
%w(starts_at issued_at expires_at notify_admins_at notify_users_at block_changes_at)
|
215
|
+
end
|
216
|
+
|
217
|
+
def current_gem_version
|
218
|
+
@current_gem_version ||= Gem::Version.new(OpenProject::Token::VERSION.to_s)
|
219
|
+
end
|
220
|
+
|
221
|
+
def domain_required_from_version
|
222
|
+
@domain_required_from_version ||= Gem::Version.new('2.0')
|
223
|
+
end
|
175
224
|
end
|
176
225
|
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.
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OpenProject GmbH
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-30 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
|
-
-
|
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.
|
87
|
+
rubygems_version: 3.0.3
|
74
88
|
signing_key:
|
75
89
|
specification_version: 4
|
76
90
|
summary: OpenProject EE token reader
|