Licensed feature availability
As of GitLab 9.4, we've been supporting a simplified version of licensed
feature availability checks via ee/app/models/license.rb
, both for
on-premise or GitLab.com plans and features.
Restricting features scoped by namespaces or projects
GitLab.com plans are persisted on user groups and namespaces, therefore, if you're adding a feature such as Related issues or Service Desk, it should be restricted on namespace scope.
- Add the feature symbol on
EES_FEATURES
,EEP_FEATURES
, orEEU_FEATURES
constants inee/app/models/license.rb
. Note that the prefixEES
signifies Starter,EEP
signifies Premium, andEEU
signifies Ultimate. - Check using:
project.feature_available?(:feature_symbol)
Restricting global features (instance)
However, for features such as Geo and Database Load Balancing, which cannot be restricted to only a subset of projects or namespaces, the check is made directly in the instance license.
- Add the feature symbol on
EES_FEATURES
,EEP_FEATURES
orEEU_FEATURES
constants inee/app/models/license.rb
. - Add the same feature symbol to
GLOBAL_FEATURES
. - Check using:
License.feature_available?(:feature_symbol)
Restricting frontend features
To restrict frontend features based on the license, use push_licensed_feature
.
The frontend can then access this via this.glFeatures
:
before_action do
push_licensed_feature(:feature_symbol)
# or by project/namespace
push_licensed_feature(:feature_symbol, project)
end