Spaces:
Sleeping
Sleeping
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/' | |
}) | |
def index(): | |
return render_template('index.html') | |
# Login Route | |
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 | |
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) | |
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) | |