openproject-token 7.4.0 → 8.1.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: 036add30203bd58edee1bb60302814023de3dec2d0ef112d3a9d34acf646294a
4
+ data.tar.gz: 71dc97d55f7fdf0f78ffa1fd1eb6b24c71e67ca0e9942c69dcc38118313257fa
5
5
  SHA512:
6
- metadata.gz: 042a8d41d1c2419a9c3b1618553d7601ebba420147db1ac51dafa166c2f13fe61440b292c7623b411824eb5ccfa4c32eec0a9b73d17c441d23a480939120663f
7
- data.tar.gz: 65ac3e3d13862ad14ce6ecefe4b1e2551c90a8c4931cbe0961d88c2074ba4154beea7b199bec27337b80d1e26796ea9b74c608e9c9879e49f431ad6e578e20f4
6
+ metadata.gz: 7d5a77dd12c965bbf26dc1736d7b69164e5fb3ddb40b69ebea4b6c77ffc87b39ebf64245ce8db0b0b5d4eed8751ceca728ed23564847e3864fc785b213fb10ce
7
+ data.tar.gz: 30c28b4596c4772c8b29de8ad5e96898093be16c5a333134d2a1c07b2678de082702f29946227eaa5d3a0f8d64927cbe793bbc1362b45d3c8c5ac6215d746ff4
@@ -54,6 +54,7 @@ module OpenProject
54
54
  customize_life_cycle
55
55
  ldap_groups
56
56
  project_list_sharing
57
+ weighted_item_lists
57
58
  ].freeze
58
59
 
59
60
  CORPORATE_PLAN_FEATURES = %i[
@@ -67,15 +68,15 @@ module OpenProject
67
68
  legacy_enterprise: LEGACY_ENTERPRISE_PLAN_FEATURES,
68
69
 
69
70
  # 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,
71
+ legacy_enterprise_professional: LEGACY_ENTERPRISE_PLAN_FEATURES | PROFESSIONAL_PLAN_FEATURES,
72
+ legacy_enterprise_premium: LEGACY_ENTERPRISE_PLAN_FEATURES | PREMIUM_PLAN_FEATURES | PROFESSIONAL_PLAN_FEATURES,
72
73
 
73
74
  # new plans
74
75
  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
76
+ professional: PROFESSIONAL_PLAN_FEATURES | BASIC_PLAN_FEATURES,
77
+ premium: PREMIUM_PLAN_FEATURES | PROFESSIONAL_PLAN_FEATURES | BASIC_PLAN_FEATURES,
78
+ corporate: CORPORATE_PLAN_FEATURES | PREMIUM_PLAN_FEATURES | PROFESSIONAL_PLAN_FEATURES | BASIC_PLAN_FEATURES
79
+ }.transform_values(&:to_set).freeze
79
80
 
80
81
  # Current plan names, sorted by inheritance
81
82
  ACTIVE_PLAN_NAMES = %i[basic professional premium corporate].freeze
@@ -86,6 +87,13 @@ module OpenProject
86
87
  # All available plan names
87
88
  AVAILABLE_PLAN_NAMES = LEGACY_PLAN_NAMES + ACTIVE_PLAN_NAMES
88
89
 
90
+ # Mapping of every feature to first active plan having it
91
+ LOWEST_PLAN_FOR_FEATURE = ACTIVE_PLAN_NAMES.each_with_object({}) do |name, map|
92
+ FEATURES_PER_PLAN[name].each do |feature|
93
+ map[feature] ||= name
94
+ end
95
+ end
96
+
89
97
  # default plan that is assigned to a token if no plan is given (especially legacy tokens)
90
98
  DEFAULT_PLAN = :legacy_enterprise
91
99
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OpenProject
4
4
  class Token
5
- VERSION = "7.4.0"
5
+ VERSION = "8.1.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.1.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: []