Configuration (Settings)

Toute la configuration multi-tenant est centralisée dans le dictionnaire MULTITENANT de settings.py. Les valeurs par défaut sont définies dans src.share_kernel.settings.

Module : src.share_kernel.settings

src.share_kernel.settings.get_setting(name: str) object[source]

Récupère un paramètre multi-tenant, avec fallback sur la valeur par défaut.

Parameters:

name – Nom du paramètre (ex: "ISOLATION_BACKEND")

Returns:

La valeur configurée ou la valeur par défaut

Référence complète

Paramètres d’isolation

Paramètre

Défaut

Description

ISOLATION_BACKEND

"schema"

Backend d’isolation : "schema", "rls", "shared_fk"

SHARED_SCHEMA_NAME

"public"

Nom du schéma partagé PostgreSQL

TENANT_SCHEMA_PREFIX

"tenant_"

Préfixe des schémas tenant

SCHEMA_NAME_REGEX

"^[a-z]..."

Regex de validation des noms de schéma

RESERVED_SCHEMA_NAMES

[...]

Noms de schéma réservés

TENANT_STATEMENT_TIMEOUT_MS

30000

Timeout SQL par tenant (protection noisy neighbor)

Paramètres de résolution tenant

Paramètre

Défaut

Description

TENANT_HEADER

"X-Tenant-ID"

Header HTTP pour l’identification du tenant

TENANT_JWT_CLAIM

"tenant_id"

Claim JWT contenant le tenant ID

TENANT_RESOLUTION_ORDER

["jwt", "header"]

Ordre de résolution (JWT d’abord, puis header)

Paramètres ABAC

Paramètre

Défaut

Description

ABAC_ENABLED

True

Active/désactive l’évaluation ABAC

ABAC_DEFAULT_EFFECT

"deny"

Effet par défaut si aucune politique ne matche

ABAC_CONDITION_ENGINE

"json"

Moteur de conditions : "json", "cedar", "casbin"

ABAC_CACHE_POLICIES

True

Mise en cache des politiques

ABAC_POLICY_CACHE_TTL

300

TTL du cache des politiques (secondes)

ABAC_MAX_CONDITION_DEPTH

10

Profondeur maximale d’imbrication des conditions

ABAC_MAX_CONDITIONS_PER_POLICY

50

Nombre max de conditions par politique

ABAC_REGEX_TIMEOUT_MS

100

Timeout pour les regex dans les conditions

Paramètres d’approbation

Paramètre

Défaut

Description

APPROVAL_ENABLED

True

Active/désactive les workflows d’approbation

APPROVAL_DEFAULT_EXPIRATION_HOURS

72

Expiration par défaut des demandes (heures)

APPROVAL_DEFAULT_REQUIRED_APPROVALS

1

Nombre d’approbations requises par défaut

APPROVAL_AUTO_EXECUTE_DEFAULT

True

Exécution automatique après approbation

Paramètres OTP / 2FA

Paramètre

Défaut

Description

OTP_ENABLED

False

Active/désactive le 2FA

OTP_EMAIL_ENABLED

True

Active le canal OTP par email

OTP_TOTP_ENABLED

True

Active le canal TOTP

OTP_STATIC_ENABLED

True

Active les codes de récupération

OTP_EMAIL_TOKEN_VALIDITY_SECONDS

300

Validité des codes email (secondes)

OTP_TOTP_ISSUER_NAME

"django-multitenant"

Nom de l’émetteur TOTP (affiché dans l’app)

OTP_STATIC_TOKEN_COUNT

10

Nombre de codes de récupération générés

OTP_REQUIRED_FOR_LOGIN

False

OTP obligatoire pour le login

Paramètres divers

Paramètre

Défaut

Description

ASYNC_BACKEND

"auto"

Backend async : "celery", "sync", "auto"

JWT_INCLUDE_TENANT_CLAIMS

True

Inclure les claims tenant dans le JWT

INVITATION_ENABLED

True

Active/désactive les invitations

INVITATION_EXPIRATION_HOURS

168

Expiration des invitations (7 jours)

EMAIL_VERIFICATION_ENABLED

False

Active/désactive la vérification email

Internationalisation (django-parler)

La traduction des modèles est gérée par django-parler. Voir Internationalisation (django-parler) pour le guide complet.

LANGUAGES = [
    ('en', 'English'),
    ('fr', 'Français'),
    ('ar', 'العربية'),
]

PARLER_LANGUAGES = {
    None: (
        {'code': 'en'},
        {'code': 'fr'},
        {'code': 'ar'},
    ),
    'default': {
        'fallbacks': ['en'],
        'hide_untranslated': False,
    },
}
Paramètres PARLER_LANGUAGES

Paramètre

Défaut

Description

fallbacks

['en']

Langues de repli si la traduction n’existe pas

hide_untranslated

False

Masquer les objets sans traduction dans la langue active