Files
gander/web_server/blueprints/user.py
Chris-1010 8ec60b1c41 Major: Added Authentication Functionality, interfaces with backend;
Added new styles to HomePage & VideoPage;
Added AuthContext to persist logged_in status;
2025-01-24 15:44:27 +00:00

64 lines
2.2 KiB
Python

from flask import Blueprint, jsonify, session
from database.database import Database
from datetime import datetime
user_bp = Blueprint("user", __name__)
@user_bp.route('/is_subscribed/<int:user_id>/<int:streamer_id>', methods=['GET'])
def user_subscribed(user_id, streamer_id):
"""
Checks to see if user is subscribed to a streamer
"""
db = Database()
cursor = db.create_connection()
data = cursor.execute("SELECT * FROM subscribes WHERE user_id = ? AND streamer_id = ? AND expires > since", (user_id, streamer_id)).fetchone()
if data:
return jsonify({"subscribed": True})
return jsonify({"subscribed": False})
@user_bp.route('/is_following/<int:user_id>/<int:streamer_id>', methods=['GET'])
def user_following(user_id, streamer_id):
"""
Checks to see if user is following a streamer
"""
db = Database()
cursor = db.create_connection()
data = cursor.execute("SELECT * FROM follows WHERE user_id = ? AND streamer_id = ?", (user_id, streamer_id)).fetchone()
if data:
return jsonify({"following": True})
return jsonify({"following": False})
@user_bp.route('/subscription_remaining/<int:user_id>/<int:streamer_id>', methods=['GET'])
def user_subscription_expiration(user_id, streamer_id):
"""
Returns remaining time until subscription expiration
"""
db = Database()
cursor = db.create_connection()
data = cursor.execute("SELECT expires from subscriptions WHERE user_id = ? AND streamer_id = ? AND expires > since", (user_id,streamer_id))
if data:
expiration_date = data[0]
ends_datetime = datetime.strptime(expiration_date, '%Y-%m-%d %H:%M:%S')
remaining_time = ends_datetime - datetime.now()
return jsonify({"remaining_time": remaining_time.seconds})
return jsonify({"remaining_time": 0})
@user_bp.route('/get_login_status')
def get_login_status():
"""
Returns whether the user is logged in or not
"""
return jsonify(session.get("username") is not None)
@user_bp.route('/authenticate_user')
def authenticate_user():
"""
Authenticates the user
"""
return {"authenticated": True}