openproject-token 7.4.0 → 8.0.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: 2064a1b8f0dab622d882336e7f5df62c822aa13072d0cd16314929e030b46e48
4
- data.tar.gz: 977732dcf6bb1ac7a6d3924e2c26dc3253ffd38fa411006db11c4818e69502f0
3
+ metadata.gz: 3f48b64629de53c6fda9d9e9521c405dceb616e918943c1ea0ba63643641526c
4
+ data.tar.gz: 2d836191f2c4056e4bb15ababa929c6d8be0d8ee89a56d6e9a52bea3ce399daa
5
5
  SHA512:
6
- metadata.gz: 042a8d41d1c2419a9c3b1618553d7601ebba420147db1ac51dafa166c2f13fe61440b292c7623b411824eb5ccfa4c32eec0a9b73d17c441d23a480939120663f
7
- data.tar.gz: 65ac3e3d13862ad14ce6ecefe4b1e2551c90a8c4931cbe0961d88c2074ba4154beea7b199bec27337b80d1e26796ea9b74c608e9c9879e49f431ad6e578e20f4
6
+ metadata.gz: 8126b0cf871408bd4ef7660904292b38605de41c0458bc404f28b9b1a77dfbce84696802ed6726ade0ed0c014f122cead3afe9c1ea405dd41a245bbbc9a003de
7
+ data.tar.gz: 96f52b9e421ca374d3cda809c79470bb9118f040497c73e743f63eb167f4525fea631a4afc7f69e0fecaea80c251fd47b2b7715f40079710f073248111ffc2e7
@@ -67,15 +67,15 @@ module OpenProject
67
67
  legacy_enterprise: LEGACY_ENTERPRISE_PLAN_FEATURES,
68
68
 
69
69
  # old plan that receives new features from the given new plan name
70
- legacy_enterprise_professional: (LEGACY_ENTERPRISE_PLAN_FEATURES + PROFESSIONAL_PLAN_FEATURES).uniq,
71
- legacy_enterprise_premium: (LEGACY_ENTERPRISE_PLAN_FEATURES + PREMIUM_PLAN_FEATURES + PROFESSIONAL_PLAN_FEATURES).uniq,
70
+ legacy_enterprise_professional: LEGACY_ENTERPRISE_PLAN_FEATURES | PROFESSIONAL_PLAN_FEATURES,
71
+ legacy_enterprise_premium: LEGACY_ENTERPRISE_PLAN_FEATURES | PREMIUM_PLAN_FEATURES | PROFESSIONAL_PLAN_FEATURES,
72
72
 
73
73
  # new plans
74
74
  basic: BASIC_PLAN_FEATURES,
75
- professional: PROFESSIONAL_PLAN_FEATURES + BASIC_PLAN_FEATURES,
76
- premium: PREMIUM_PLAN_FEATURES + PROFESSIONAL_PLAN_FEATURES + BASIC_PLAN_FEATURES,
77
- corporate: CORPORATE_PLAN_FEATURES + PREMIUM_PLAN_FEATURES + PROFESSIONAL_PLAN_FEATURES + BASIC_PLAN_FEATURES
78
- }.freeze
75
+ professional: PROFESSIONAL_PLAN_FEATURES | BASIC_PLAN_FEATURES,
76
+ premium: PREMIUM_PLAN_FEATURES | PROFESSIONAL_PLAN_FEATURES | BASIC_PLAN_FEATURES,
77
+ corporate: CORPORATE_PLAN_FEATURES | PREMIUM_PLAN_FEATURES | PROFESSIONAL_PLAN_FEATURES | BASIC_PLAN_FEATURES
78
+ }.transform_values(&:to_set).freeze
79
79
 
80
80
  # Current plan names, sorted by inheritance
81
81
  ACTIVE_PLAN_NAMES = %i[basic professional premium corporate].freeze
@@ -86,6 +86,13 @@ module OpenProject
86
86
  # All available plan names
87
87
  AVAILABLE_PLAN_NAMES = LEGACY_PLAN_NAMES + ACTIVE_PLAN_NAMES
88
88
 
89
+ # Mapping of every feature to first active plan having it
90
+ LOWEST_PLAN_FOR_FEATURE = ACTIVE_PLAN_NAMES.each_with_object({}) do |name, map|
91
+ FEATURES_PER_PLAN[name].each do |feature|
92
+ map[feature] ||= name
93
+ end
94
+ end
95
+
89
96
  # default plan that is assigned to a token if no plan is given (especially legacy tokens)
90
97
  DEFAULT_PLAN = :legacy_enterprise
91
98
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OpenProject
4
4
  class Token
5
- VERSION = "7.4.0"
5
+ VERSION = "8.0.0"
6
6
  end
7
7
  end
@@ -49,9 +49,7 @@ module OpenProject
49
49
  end
50
50
 
51
51
  def lowest_plan_for(feature)
52
- OpenProject::Token::ACTIVE_PLAN_NAMES.detect do |plan|
53
- OpenProject::Token::FEATURES_PER_PLAN[plan].include?(feature)
54
- end
52
+ LOWEST_PLAN_FOR_FEATURE[feature]
55
53
  end
56
54
  end
57
55
 
@@ -115,12 +113,12 @@ module OpenProject
115
113
  end
116
114
 
117
115
  def available_features
118
- return @available_features if defined?(@available_features)
119
-
120
- relevant_features = OpenProject::Token::FEATURES_PER_PLAN[plan] || []
121
- additional_features = features || []
116
+ @available_features ||= begin
117
+ relevant_features = OpenProject::Token::FEATURES_PER_PLAN[plan] || []
118
+ additional_features = features || []
122
119
 
123
- @available_features = (relevant_features + additional_features).uniq
120
+ relevant_features | additional_features
121
+ end
124
122
  end
125
123
 
126
124
  ##
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openproject-token
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.4.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenProject GmbH
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-09-18 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activemodel
@@ -48,14 +48,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
48
48
  requirements:
49
49
  - - ">="
50
50
  - !ruby/object:Gem::Version
51
- version: 3.4.2
51
+ version: 3.4.5
52
52
  required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0'
57
57
  requirements: []
58
- rubygems_version: 3.6.2
58
+ rubygems_version: 3.6.9
59
59
  specification_version: 4
60
60
  summary: OpenProject EE token reader
61
61
  test_files: []