authentik.enterprise.apps

Enterprise app config

 1"""Enterprise app config"""
 2
 3from django.conf import settings
 4from prometheus_client import Gauge
 5
 6from authentik.blueprints.apps import ManagedAppConfig
 7from authentik.lib.utils.time import fqdn_rand
 8from authentik.tasks.schedules.common import ScheduleSpec
 9
10GAUGE_LICENSE_USAGE = Gauge(
11    "authentik_enterprise_license_usage",
12    "Enterprise license usage (percentage per user type).",
13    ["user_type"],
14)
15GAUGE_LICENSE_EXPIRY = Gauge(
16    "authentik_enterprise_license_expiry_seconds", "Duration until license expires, in seconds."
17)
18
19
20class EnterpriseConfig(ManagedAppConfig):
21    """Base app config for all enterprise apps"""
22
23
24class AuthentikEnterpriseConfig(EnterpriseConfig):
25    """Enterprise app config"""
26
27    name = "authentik.enterprise"
28    label = "authentik_enterprise"
29    verbose_name = "authentik Enterprise"
30    default = True
31
32    def enabled(self):
33        """Return true if enterprise is enabled and valid"""
34        return self.check_enabled() or settings.TEST
35
36    def check_enabled(self):
37        """Actual enterprise check, cached"""
38        from authentik.enterprise.license import LicenseKey
39
40        return LicenseKey.cached_summary().status.is_valid
41
42    @property
43    def tenant_schedule_specs(self) -> list[ScheduleSpec]:
44        from authentik.enterprise.tasks import enterprise_update_usage
45
46        return [
47            ScheduleSpec(
48                actor=enterprise_update_usage,
49                crontab=f"{fqdn_rand('enterprise_update_usage')} */2 * * *",
50            ),
51        ]
GAUGE_LICENSE_USAGE = prometheus_client.metrics.Gauge(authentik_enterprise_license_usage)
GAUGE_LICENSE_EXPIRY = prometheus_client.metrics.Gauge(authentik_enterprise_license_expiry_seconds)
class EnterpriseConfig(authentik.blueprints.apps.ManagedAppConfig):
21class EnterpriseConfig(ManagedAppConfig):
22    """Base app config for all enterprise apps"""

Base app config for all enterprise apps

class AuthentikEnterpriseConfig(EnterpriseConfig):
25class AuthentikEnterpriseConfig(EnterpriseConfig):
26    """Enterprise app config"""
27
28    name = "authentik.enterprise"
29    label = "authentik_enterprise"
30    verbose_name = "authentik Enterprise"
31    default = True
32
33    def enabled(self):
34        """Return true if enterprise is enabled and valid"""
35        return self.check_enabled() or settings.TEST
36
37    def check_enabled(self):
38        """Actual enterprise check, cached"""
39        from authentik.enterprise.license import LicenseKey
40
41        return LicenseKey.cached_summary().status.is_valid
42
43    @property
44    def tenant_schedule_specs(self) -> list[ScheduleSpec]:
45        from authentik.enterprise.tasks import enterprise_update_usage
46
47        return [
48            ScheduleSpec(
49                actor=enterprise_update_usage,
50                crontab=f"{fqdn_rand('enterprise_update_usage')} */2 * * *",
51            ),
52        ]

Enterprise app config

label = 'authentik_enterprise'
verbose_name = 'authentik Enterprise'
default = True
def enabled(self):
33    def enabled(self):
34        """Return true if enterprise is enabled and valid"""
35        return self.check_enabled() or settings.TEST

Return true if enterprise is enabled and valid

def check_enabled(self):
37    def check_enabled(self):
38        """Actual enterprise check, cached"""
39        from authentik.enterprise.license import LicenseKey
40
41        return LicenseKey.cached_summary().status.is_valid

Actual enterprise check, cached

tenant_schedule_specs: list[authentik.tasks.schedules.common.ScheduleSpec]
43    @property
44    def tenant_schedule_specs(self) -> list[ScheduleSpec]:
45        from authentik.enterprise.tasks import enterprise_update_usage
46
47        return [
48            ScheduleSpec(
49                actor=enterprise_update_usage,
50                crontab=f"{fqdn_rand('enterprise_update_usage')} */2 * * *",
51            ),
52        ]

Get a list of schedule specs that must exist in each tenant