FEAT: End any ongoing stream before a user logs out;

UPDATE: Remove assignments to session after registering a new user;
UPDATE: Create directories for user upon logging in in case they do not exist yet;
This commit is contained in:
Chris-1010
2025-03-03 01:55:01 +00:00
parent c7d443d8b6
commit 04d99928aa
2 changed files with 24 additions and 8 deletions

View File

@@ -95,12 +95,6 @@ def signup():
# Create user directories for stream data
path_manager.create_user(username)
# Create session for new user, to avoid them having unnecessary state info
session.clear()
session["username"] = username
session["user_id"] = get_user_id(username)
print(f"Logged in as {username}. session: {session.get('username')}. user_id: {session.get('user_id')}", flush=True)
# send_email(username)
return jsonify({
@@ -178,8 +172,11 @@ def login():
"error_fields": ["username", "password"],
"message": "Invalid username or password"
}), 401
# Add user directories for stream data in case they don't exist
path_manager.create_user(username)
# Set up session to avoid having unncessary state information
# Set up session
session.clear()
session["username"] = username
session["user_id"] = get_user_id(username)
@@ -209,8 +206,27 @@ def logout() -> dict:
"""
Log out and clear the users session.
If the user is currently streaming, end their stream first.
Can only be accessed by a logged in user.
"""
from database.database import Database
from utils.stream_utils import end_user_stream
# Check if user is currently streaming
user_id = session.get("user_id")
username = session.get("username")
with Database() as db:
is_streaming = db.fetchone("""SELECT is_live FROM users WHERE user_id = ?""", (user_id,))
if is_streaming and is_streaming.get("is_live") == 1:
# Get the user's stream key
stream_key_info = db.fetchone("""SELECT stream_key FROM users WHERE user_id = ?""", (user_id,))
stream_key = stream_key_info.get("stream_key") if stream_key_info else None
if stream_key:
# End the stream
end_user_stream(stream_key, user_id, username)
session.clear()
return {"logged_in": False}

View File

@@ -94,7 +94,7 @@ def get_highest_view_categories(no_categories: int = 4, offset: int = 0) -> Opti
""", (no_categories, offset))
return categories
def get_user_category_recommendations(user_id: 1, no_categories: int = 4) -> Optional[List[dict]]:
def get_user_category_recommendations(user_id = 1, no_categories: int = 4) -> Optional[List[dict]]:
"""
Queries user_preferences database to find users top favourite streaming category and returns the category
"""