Spaces:
Sleeping
Sleeping
File size: 2,630 Bytes
03e7882 0db0b4e c8e724a 0db0b4e c8e724a 79e247b c8e724a b722bd0 c8e724a 03e7882 c8e724a 03e7882 c8e724a 03e7882 c8e724a 79e247b c8e724a 03e7882 c8e724a 79e247b c8e724a 79e247b c8e724a 79e247b 03e7882 c8e724a 79e247b c8e724a 79e247b c8e724a 79e247b c8e724a 79e247b c8e724a 79e247b c8e724a 79e247b c8e724a 0db0b4e 976388a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
from flask import Flask, request, jsonify
import requests
import json
import base64
app = Flask(__name__)
# GitHub credentials from environment variables
GITHUB_TOKEN = 'your_github_token' # Replace with your GitHub token
REPO_OWNER = 'hussein2000-oo'
REPO_NAME = 'dbailloolloloolollhrthlnewrgnk'
USER_FILE_NAME = 'user.json'
# Function to fetch user data from GitHub
def fetch_user_data():
url = f'https://api.github.com/repos/{REPO_OWNER}/{REPO_NAME}/contents/{USER_FILE_NAME}'
headers = {'Authorization': f'token {GITHUB_TOKEN}'}
response = requests.get(url, headers=headers)
if response.status_code == 200:
content = response.json()
user_data = json.loads(base64.b64decode(content['content']).decode('utf-8'))
return user_data, content['sha'] # Return the SHA for updating the file
else:
return {}, None # Return an empty dict if fetching fails
# Function to update user data on GitHub
def update_user_data(user_data, sha):
url = f'https://api.github.com/repos/{REPO_OWNER}/{REPO_NAME}/contents/{USER_FILE_NAME}'
headers = {'Authorization': f'token {GITHUB_TOKEN}'}
updated_content = base64.b64encode(json.dumps(user_data).encode('utf-8')).decode('utf-8')
payload = {
"message": "Update user.json with new password",
"content": updated_content,
"sha": sha
}
response = requests.put(url, headers=headers, json=payload)
return response.status_code == 200
@app.route('/reset_password', methods=['POST'])
def reset_password():
data = request.json
username = data.get('username')
user_data, sha = fetch_user_data()
if username in user_data:
questions = user_data[username]['security_questions']
answers = {}
for question in questions:
answer = input(f"{question}: ")
answers[question] = answer
# Check if answers match
if all(user_data[username]['security_questions'][q] == answers[q] for q in questions):
new_password = input("Enter your new password: ")
user_data[username]['password'] = new_password
if update_user_data(user_data, sha):
return jsonify({"message": "Password reset successfully."}), 200
else:
return jsonify({"message": "Failed to update user data."}), 500
else:
return jsonify({"message": "Security answers do not match."}), 403
else:
return jsonify({"message": "User not found."}), 404
if __name__ == '__main__':
app.run(host="0.0.0.0", port=7860)
|