from flask import Flask, request, jsonify, redirect, url_for, render_template, session import firebase_admin from firebase_admin import credentials, auth, db # Initialize Flask app app = Flask(__name__) app.secret_key = '9177' # Firebase Admin SDK Initialization cred = credentials.Certificate("serviceAccountKey.json") firebase_admin.initialize_app(cred, { 'databaseURL': 'https://fitnessdb-c9b11-default-rtdb.firebaseio.com/' }) @app.route('/') def index(): return render_template('index.html') # Login Route @app.route('/register', methods=['POST']) def register(): data = request.get_json() # Extract user details from the request name = data['name'] email = data['email'] password = data['password'] age = data['age'] height = data['height'] weight = data['weight'] max_pullups = data['maxPullups'] min_pullups = data['minPullups'] gender = data['gender'] progress = {} # Create Firebase user using Firebase Auth try: # Create the user in Firebase Authentication user = auth.create_user( email=email, password=password, display_name=name ) # Store additional user data in Firebase Realtime Database user_ref = db.reference(f'users/{user.uid}') user_ref.set({ 'name': name, 'email': email, 'age': age, 'height': height, 'weight': weight, 'maxPullups': max_pullups, 'minPullups': min_pullups, 'gender': gender, }) new_user_progress = db.reference(f"daywiseprogress") new_user_progress.set({ 'email':email, 'progress':dict() }) return jsonify({"message": "User registered successfully!"}), 200 except Exception as e: return jsonify({"error": str(e)}), 400 @app.route('/login', methods=['POST']) def login(): data = request.get_json() email = data['email'] password = data['password'] try: # Authenticate user with Firebase Auth user = auth.get_user_by_email(email) # Validate password (Firebase Authentication handles password validation) # No need to manually validate password here since Firebase Authentication ensures the password matches ref = db.reference("users") users_data = ref.get() for user_id,user_data in users_data.items(): if user_data.get('email') == email: user_name = user_data['name'] session['user_details'] = user_data print(user_data['name']) return jsonify({"message":"sucess"}) except auth.AuthError as e: return jsonify({"error": "Invalid credentials"}), 401 # Home Route (Display User Credentials) @app.route('/home', methods=['GET']) def home(): # Get the ID token from the query parameter print(session) progress = session['progress'] if len(progress) == 0: # Recommended workout code goes here return render_template("workout.html") else: return render_template("currentprogress.html") if __name__ == '__main__': app.run(debug=True)