Add missing json import in auth.py for session updates

parent eb0a9847
...@@ -21,6 +21,7 @@ Authentication and session management for Video AI. ...@@ -21,6 +21,7 @@ Authentication and session management for Video AI.
import os import os
import time import time
import secrets import secrets
import json
from typing import Optional, Dict, Any from typing import Optional, Dict, Any
from .database import authenticate_user, validate_api_token, create_persistent_session, get_persistent_session, destroy_persistent_session from .database import authenticate_user, validate_api_token, create_persistent_session, get_persistent_session, destroy_persistent_session
...@@ -80,6 +81,22 @@ class SessionManager: ...@@ -80,6 +81,22 @@ class SessionManager:
else: else:
return get_persistent_session(session_id) return get_persistent_session(session_id)
def update_session_user(self, session_id: str, user: Dict[str, Any]) -> None:
"""Update user data in session."""
if self._use_redis():
session_data = self._get_redis_session(session_id)
if session_data:
session_data['user'] = user
self.redis_client.setex(f"session:{session_id}", self.session_timeout, json.dumps(session_data))
else:
# Update database session
from .database import get_db_connection
conn = get_db_connection()
cursor = conn.cursor()
cursor.execute('UPDATE sessions SET data = ? WHERE session_id = ?', (json.dumps({'user': user}), session_id))
conn.commit()
conn.close()
def destroy_session(self, session_id: str) -> None: def destroy_session(self, session_id: str) -> None:
"""Destroy session.""" """Destroy session."""
if self._use_redis(): if self._use_redis():
......
...@@ -1056,6 +1056,11 @@ def upload_avatar(): ...@@ -1056,6 +1056,11 @@ def upload_avatar():
from .database import update_user_avatar from .database import update_user_avatar
update_user_avatar(user['id'], filename) update_user_avatar(user['id'], filename)
# Update session user data
user['avatar'] = filename
from .auth import session_manager
session_manager.update_session_user(session['session_id'], user)
flash('Avatar uploaded successfully', 'success') flash('Avatar uploaded successfully', 'success')
else: else:
flash('Invalid file type. Please upload PNG, JPG, or GIF.', 'error') flash('Invalid file type. Please upload PNG, JPG, or GIF.', 'error')
...@@ -1079,6 +1084,11 @@ def delete_avatar(): ...@@ -1079,6 +1084,11 @@ def delete_avatar():
from .database import update_user_avatar from .database import update_user_avatar
update_user_avatar(user['id'], None) update_user_avatar(user['id'], None)
# Update session user data
user['avatar'] = None
from .auth import session_manager
session_manager.update_session_user(session['session_id'], user)
flash('Custom avatar deleted. Using Gravatar now.', 'success') flash('Custom avatar deleted. Using Gravatar now.', 'success')
else: else:
flash('No custom avatar to delete', 'error') flash('No custom avatar to delete', 'error')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment