1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-18 21:09:40 +02:00
portainer/app/portainer/feature-flags/feature-flags.service.ts
Chaim Lev-Ari b588d901cf
fix(app): skip authorizations in CE [EE-2423] (#6431)
* feat(app): check auth on ee only

* refactor(features): load edition from env var

* fix(containers): show empty message if no containers
2022-01-24 08:02:23 +02:00

58 lines
1.6 KiB
TypeScript

import { Edition, FeatureId, FeatureState } from './enums';
interface ServiceState {
currentEdition: Edition;
features: Record<FeatureId, Edition>;
}
const state: ServiceState = {
currentEdition: Edition.CE,
features: <Record<FeatureId, Edition>>{},
};
export async function init(edition: Edition) {
// will be loaded on runtime
const currentEdition = edition;
const features = {
[FeatureId.K8S_RESOURCE_POOL_LB_QUOTA]: Edition.BE,
[FeatureId.K8S_RESOURCE_POOL_STORAGE_QUOTA]: Edition.BE,
[FeatureId.ACTIVITY_AUDIT]: Edition.BE,
[FeatureId.EXTERNAL_AUTH_LDAP]: Edition.BE,
[FeatureId.HIDE_INTERNAL_AUTH]: Edition.BE,
[FeatureId.HIDE_INTERNAL_AUTHENTICATION_PROMPT]: Edition.BE,
[FeatureId.K8S_SETUP_DEFAULT]: Edition.BE,
[FeatureId.RBAC_ROLES]: Edition.BE,
[FeatureId.REGISTRY_MANAGEMENT]: Edition.BE,
[FeatureId.S3_BACKUP_SETTING]: Edition.BE,
[FeatureId.TEAM_MEMBERSHIP]: Edition.BE,
[FeatureId.FORCE_REDEPLOYMENT]: Edition.BE,
[FeatureId.HIDE_AUTO_UPDATE_WINDOW]: Edition.BE,
};
state.currentEdition = currentEdition;
state.features = features;
}
export function selectShow(featureId?: FeatureId) {
if (!featureId) {
return FeatureState.VISIBLE;
}
if (!state.features[featureId]) {
return FeatureState.HIDDEN;
}
if (state.features[featureId] <= state.currentEdition) {
return FeatureState.VISIBLE;
}
if (state.features[featureId] === Edition.BE) {
return FeatureState.LIMITED_BE;
}
return FeatureState.HIDDEN;
}
export function isLimitedToBE(featureId?: FeatureId) {
return selectShow(featureId) === FeatureState.LIMITED_BE;
}