Configuration

Ce guide détaille la configuration de l’API ApiJO après installation.

Configuration Django

Fichier settings.py

Les principaux paramètres à configurer dans ApiJO_Back/settings.py : les paramètres sont à configurer dans le .env

Base de données

Modification du moteur de Base de données si nécessaire (PostgreSQL recommandé) :

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get('DB_NAME', 'apijoback'),
        'USER': os.environ.get('DB_USER', 'apijouser'),
        'PASSWORD': os.environ.get('DB_PASSWORD'),
        'HOST': os.environ.get('DB_HOST', 'localhost'),
        'PORT': os.environ.get('DB_PORT', '5432'),
    }
}

Authentification JWT

from datetime import timedelta

SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=60),
    'REFRESH_TOKEN_LIFETIME': timedelta(days=7),
    'ROTATE_REFRESH_TOKENS': True,
    'BLACKLIST_AFTER_ROTATION': True,
}

CORS (Cross-Origin Resource Sharing)

CORS_ALLOWED_ORIGINS = [
    "http://localhost:3000",  # Frontend React
    "http://127.0.0.1:3000",
]

CORS_ALLOW_CREDENTIALS = True

Configuration des modèles

Paramètres par défaut des modèles

Événements

Les événements ont des paramètres par défaut configurables :

  • Nombre de places par défaut : 1000 places

  • Gestion automatique des places restantes

Configuration des rôles utilisateurs

L’API supporte trois rôles principaux :

Client

  • Permissions : Consultation des événements et offres

  • Restrictions : Pas d’accès admin

  • Profil : ClientProfile avec informations personnelles

Employé

  • Permissions : Gestion des événements et épreuves

  • Restrictions : Pas de création d’utilisateurs

  • Profil : EmployeProfile avec matricule

  • Utilisation dans les vues : [isEmploye]

Admin

  • Permissions : Accès complet à l’API

  • Capacités : Création d’employés, gestion complète

  • Accès : API complète

  • Utilisation dans les vues : [isAdmin]

Configuration des validateurs

Validation des mots de passe

Configuration du StrongPasswordValidator :

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'authentication.validators.StrongPasswordValidator',
        'OPTIONS': {
            'min_length': 12,
            'require_uppercase': True,
            'require_lowercase': True,
            'require_digits': True,
            'require_special': True,
        }
    },
]

Validation des emails

Utilise le EmailValidator intégré avec vérifications anti-spam.

Configuration de l’API REST

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 20
}

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
}

Configuration des médias

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

# Taille maximale des fichiers (5MB)
FILE_UPLOAD_MAX_MEMORY_SIZE = 5242880

Configuration de production

# Sécurité
DEBUG=False
SECRET_KEY=votre_clé_très_sécurisée
ALLOWED_HOSTS=votredomaine.com,www.votredomaine.com

# Base de données production
DB_NAME=apijoback_prod
DB_HOST=votre_serveur_db
DB_PASSWORD=mot_de_passe_très_sécurisé

# CORS
CORS_ALLOWED_ORIGINS=https://votredomaine1.com,https://votredomaine2.com

Tests de configuration

# Test des paramètres Django
python manage.py check

# Test de la base de données
python manage.py dbshell

# Test des migrations
python manage.py showmigrations

# Test de l'API
python manage.py test

Problèmes de configuration courants

  • Erreur 500 : Vérifiez DEBUG=True en développement

  • CORS : Ajoutez votre frontend aux CORS_ALLOWED_ORIGINS

  • JWT : Vérifiez que les tokens ne sont pas expirés

  • Permissions : Contrôlez les rôles utilisateurs