diff --git a/.env b/.env
index b4e0bf0..e7d86c8 100644
--- a/.env
+++ b/.env
@@ -7,9 +7,9 @@ ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
# Configuration pour AWS S3 (à remplir si nécessaire)
-AWS_ACCESS_KEY_ID=your-aws-access-key
-AWS_SECRET_ACCESS_KEY=your-aws-secret-key
-AWS_BUCKET_NAME=your-bucket-name
+#AWS_ACCESS_KEY_ID=your-aws-access-key
+#AWS_SECRET_ACCESS_KEY=your-aws-secret-key
+#AWS_BUCKET_NAME=your-bucket-name
# Configuration pour Celery (à remplir si nécessaire)CELERY_BROKER_URL=redis://venguard.m-a-i.tech/
CELERY_BROKER_URL=redis://localhost:6379/0
diff --git a/api/v1/auth.py b/api/v1/auth.py
index 858b67c..068dbe1 100644
--- a/api/v1/auth.py
+++ b/api/v1/auth.py
@@ -33,6 +33,7 @@ async def signup(user: UserCreate, db=Depends(get_db)):
@router.post("/token", response_model=Token, summary="Login and get access token")
async def login_for_access_token( form_data: OAuth2PasswordRequestForm = Depends(), db=Depends(get_db)):
user = await AuthService.authenticate_user(form_data.username, form_data.password, db)
+ logger.info(f"User {form_data.username} logged in")
if not user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
diff --git a/htaccess b/htaccess
index df49519..975e038 100644
--- a/htaccess
+++ b/htaccess
@@ -1,10 +1,10 @@
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
-PassengerAppRoot "/home/sywmtnsg/api"
-PassengerBaseURI "/"
-PassengerPython "/home/sywmtnsg/virtualenv/api/3.11/bin/python"
+#PassengerAppRoot "/home/sywmtnsg/api"
+#PassengerBaseURI "/"
+#PassengerPython "/home/sywmtnsg/virtualenv/api/3.11/bin/python"
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END
-PassengerFriendlyErrorPages on
+#PassengerFriendlyErrorPages on
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION BEGIN
-
-
+#
+#
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION END
diff --git a/main.py b/main.py
index 6bb2854..c367281 100644
--- a/main.py
+++ b/main.py
@@ -1,10 +1,29 @@
from fastapi import FastAPI
+from fastapi.responses import JSONResponse
from api.v1 import users, roles, need_requests, reports, uploads, person_reports, technical_issues, points_of_interest, shelters, auth #, messages
from config.database import init_db
+from starlette.middleware.base import BaseHTTPMiddleware
+from utils.logging import logger
app = FastAPI(title="Disaster Management API", description="API for managing disaster during these days of ending world.")
+# Middleware pour logger les erreurs
+class LogErrorsMiddleware(BaseHTTPMiddleware):
+ async def dispatch(self, request, call_next):
+ try:
+ response = await call_next(request)
+ return response
+ except Exception as e:
+ logger.error(f"Auth error: {str(e)}")
+ return JSONResponse(
+ status_code=500,
+ content={"message": "Internal Server Error"}
+ )
+
+# Ajouter le middleware à l'application
+app.add_middleware(LogErrorsMiddleware)
+
# Include routers
app.include_router(auth.router, prefix="/api/v1/auth", tags=["auth"])
app.include_router(person_reports.router, prefix="/api/v1/person_reports", tags=["person_reports"])
diff --git a/models/db.py b/models/db.py
index f6f4ec3..4930dc6 100644
--- a/models/db.py
+++ b/models/db.py
@@ -17,6 +17,7 @@ users_table = Table(
Column('hashed_password', String(255), nullable=False),
Column('role', String(50), nullable=False),
Column('is_banned', Boolean, default=False),
+ Column('is_blocked', Boolean, default=False),
Column('is_deleted', Boolean, default=False)
)
diff --git a/models/schemas.py b/models/schemas.py
index f1f3fa7..7b15c4c 100644
--- a/models/schemas.py
+++ b/models/schemas.py
@@ -42,6 +42,7 @@ class UserResponse(BaseModel):
organization: Optional[str] = None
role: RoleResponse
is_banned: bool
+ is_blocked: bool
is_deleted: bool
# Validation au niveau du modèle
diff --git a/services/user_service.py b/services/user_service.py
index ff22603..61ae4c9 100644
--- a/services/user_service.py
+++ b/services/user_service.py
@@ -78,7 +78,7 @@ class UserService:
query = (
update(users_table)
.where(users_table.c.email == user_action.email)
- .values(is_active=False)
+ .values(is_blocked=True)
)
result = await db.execute(query)
await db.commit()
@@ -107,7 +107,7 @@ class UserService:
query = (
update(users_table)
.where(users_table.c.email == user_action.email)
- .values(is_active=True)
+ .values(is_blocked=False)
)
result = await db.execute(query)
await db.commit()
diff --git a/utils/logging.py b/utils/logging.py
index 9985ffa..bd6e745 100644
--- a/utils/logging.py
+++ b/utils/logging.py
@@ -1,13 +1,35 @@
import logging
+from logging.handlers import TimedRotatingFileHandler
import os
-# Configuration du logger pour la console
-logging.basicConfig(
- level=logging.INFO,
- format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
- handlers=[
- logging.StreamHandler() # Affiche les logs dans la console
- ]
-)
+# Chemin du fichier de log
+log_file_path = "logserver.log"
-logger = logging.getLogger('ApplicationLogger')
\ No newline at end of file
+# Crée le répertoire du fichier de log s'il n'existe pas
+log_dir = os.path.dirname(log_file_path)
+if not os.path.exists(log_dir) and log_dir != '':
+ os.makedirs(log_dir)
+
+# Configuration du logger
+logger = logging.getLogger('ApplicationLogger')
+logger.setLevel(logging.INFO)
+
+# Gestionnaire de console
+console_handler = logging.StreamHandler()
+console_handler.setLevel(logging.INFO)
+
+# Gestionnaire de fichier
+file_handler = TimedRotatingFileHandler(log_file_path, when="midnight", backupCount=7)
+file_handler.setLevel(logging.INFO)
+
+# Format des logs
+formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
+console_handler.setFormatter(formatter)
+file_handler.setFormatter(formatter)
+
+# Ajout des gestionnaires au logger
+logger.addHandler(console_handler)
+logger.addHandler(file_handler)
+
+# Exemple de log
+logger.info("Ceci est un message de log.")