Spaces:
Runtime error
Runtime error
| from email.message import EmailMessage | |
| from flask import Flask, request, jsonify, render_template | |
| import random | |
| import string | |
| from flask_cors import CORS | |
| import smtplib | |
| import bcrypt | |
| import mysql.connector | |
| app = Flask(__name__) | |
| CORS(app) | |
| mysql = mysql.connector.connect( | |
| host='sql12.freesqldatabase.com', | |
| user='sql12653124', | |
| password='kqM3CPBsqP', | |
| database='sql12653124', | |
| port=3306 | |
| ) | |
| def feedback(): | |
| if request.method == 'POST': | |
| data = request.get_json() | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("INSERT INTO `feedbacks`(`email`, `feedback`) VALUES (%s, %s)", | |
| (data.get('email'), data.get('feedback'),)) | |
| mysql.commit() | |
| cursor.close() | |
| return jsonify({'success': True}) | |
| if request.method == 'GET': | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("SELECT * FROM `feedbacks`") | |
| feedback_data = cursor.fetchall() | |
| mysql.commit() | |
| cursor.close() | |
| return jsonify({'success': True, 'data': feedback_data}) | |
| def register(): | |
| if request.method == 'POST': | |
| data = request.get_json() | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("SELECT * FROM users WHERE email = %s", (data.get('email'),)) | |
| user = cursor.fetchone() | |
| mysql.commit() | |
| cursor.close() | |
| if user: | |
| error = 'Email address already in use. Please use a different email address.' | |
| return jsonify({'success': False, 'message': error}) | |
| else: | |
| msg = EmailMessage() | |
| # alphabet = string.ascii_letters + string.digits | |
| otp = random.randint(100000, 999999) | |
| print(otp) | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("INSERT INTO `otp`(`mail`, `otp`) VALUES (%s, %s)", (data.get('email'), otp,)) | |
| mysql.commit() | |
| cursor.close() | |
| msg["Subject"] = "StoryCircle Verification" | |
| msg["From"] = "storycircle123@gmail.com" | |
| msg["To"] = data.get('email') | |
| html_content = render_template('email.html', name=data.get('name'), otp=otp) | |
| msg.set_content(html_content, subtype='html') | |
| with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp: | |
| smtp.login('storycircle123@gmail.com', 'njoexkbwuscrwdhf') | |
| smtp.send_message(msg) | |
| return jsonify({'success': True}) | |
| def verify(): | |
| if request.method == 'POST': | |
| data = request.get_json() | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("SELECT `otp` FROM `otp` WHERE `mail`=%s ORDER BY `id` DESC LIMIT 1", (data.get('email'),)) | |
| system_otp = cursor.fetchone() | |
| mysql.commit() | |
| cursor.close() | |
| if system_otp['otp'] == data.get('otp'): | |
| cursor = mysql.cursor(dictionary=True) | |
| password = data.get('password').encode('utf-8') | |
| hash_password = bcrypt.hashpw(password, bcrypt.gensalt()) | |
| cursor.execute("INSERT INTO `users` (`name`, `email`, `password`) VALUES (%s, %s, %s)",(data.get('name'), data.get('email'), hash_password,)) | |
| mysql.commit() | |
| cursor.close() | |
| return jsonify({'success': True}) | |
| else: | |
| return jsonify({'success': False}) | |
| def login(): | |
| if request.method == 'POST': | |
| data = request.get_json() | |
| email = data.get('username') | |
| password = data.get('password').encode('utf-8') | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("SELECT * FROM `users` WHERE email=%s", (email,)) | |
| user = cursor.fetchone() | |
| mysql.commit() | |
| cursor.close() | |
| if user: | |
| if bcrypt.hashpw(password, user['password'].encode('utf-8')) == user['password'].encode('utf-8'): | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("INSERT INTO `session`(`id`, `name`, `email`) VALUES (%s, %s, %s)", (user['id'], user['name'], user['email'],)) | |
| mysql.commit() | |
| cursor.close() | |
| return jsonify({'login': True, 'message': 'Valid User Login', 'id': user['id'], | |
| 'name': user['name'], 'email': user['email']}) | |
| else: | |
| return jsonify({'login': False, 'message': 'Invalid Password'}) | |
| else: | |
| return jsonify({'login': False}) | |
| def checklogin(): | |
| # print(session) | |
| data = request.get_json() | |
| print(data) | |
| if data.get('email') == 'Meow': | |
| return jsonify({'login': False}) | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("SELECT `id`, `name`, `email` FROM `session` WHERE `email`= %s ORDER BY `index` DESC LIMIT 1;", (data.get('email'),)) | |
| user = cursor.fetchone() | |
| cursor.close() | |
| if user: | |
| return jsonify({'login': True, 'message': 'Valid User Login', 'id': user['id'], | |
| 'name': user['name'], 'email': user['email']}) | |
| else: | |
| return jsonify({'login': False}) | |
| def forgot(): | |
| if request.method == 'POST': | |
| data = request.get_json() | |
| print(data) | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("SELECT * FROM users WHERE email = %s", (data.get('username'),)) | |
| user = cursor.fetchone() | |
| mysql.commit() | |
| if user: | |
| msg = EmailMessage() | |
| otp = random.randint(100000, 999999) | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("INSERT INTO `otp`(`mail`, `otp`) VALUES (%s, %s)", (data.get('username'), otp,)) | |
| mysql.commit() | |
| cursor.close() | |
| msg["Subject"] = "StoryCircle Verification" | |
| msg["From"] = "storycircle123@gmail.com" | |
| msg["To"] = data.get('username') | |
| html_content = render_template('pass.html', name=user['name'], otp=otp) | |
| msg.set_content(html_content, subtype='html') | |
| with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp: | |
| smtp.login('storycircle123@gmail.com', 'njoexkbwuscrwdhf') | |
| smtp.send_message(msg) | |
| return jsonify({'success': True}) | |
| else: | |
| error = 'No such User found. Please Register first.' | |
| return jsonify(error) | |
| def verifyforgot(): | |
| if request.method == 'POST': | |
| data = request.get_json() | |
| print(data) | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("SELECT `otp` FROM `otp` WHERE `mail`=%s ORDER BY `id` DESC LIMIT 1;", (data.get('username'),)) | |
| system_otp = cursor.fetchone() | |
| print(system_otp['otp']) | |
| mysql.commit() | |
| cursor.close() | |
| if str(system_otp['otp']) == data.get('otp'): | |
| return jsonify({'success': True}) | |
| else: | |
| return jsonify({'success': False}) | |
| def reset(): | |
| if request.method == 'POST': | |
| data = request.get_json() | |
| password = data.get('password').encode('utf-8') | |
| hash_password = bcrypt.hashpw(password, bcrypt.gensalt()) | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("UPDATE `users` SET `password`= %s WHERE `email`= %s", (hash_password, data.get('username'),)) | |
| mysql.commit() | |
| cursor.close() | |
| return jsonify({'success': True}) | |
| def logout(): | |
| data = request.get_json() | |
| cursor = mysql.cursor(dictionary=True) | |
| cursor.execute("DELETE FROM `session` WHERE `email` = %s ;", (data.get('email'),)) | |
| mysql.commit() | |
| cursor.close() | |
| return jsonify({'logout': True}) | |
| if __name__ == '__main__': | |
| app.run() |