Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions script/bak.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
from flask import Flask, render_template, redirect, url_for, request, session
from flask_sqlalchemy import SQLAlchemy
from flask_mail import Mail, Message
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Email
import random

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
app.config['MAIL_SERVER'] = 'smtp.gmail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = 'your_email@gmail.com'
app.config['MAIL_PASSWORD'] = 'your_email_password'

db = SQLAlchemy(app)
mail = Mail(app)

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(150), unique=True, nullable=False)
password = db.Column(db.String(150), nullable=False)
otp = db.Column(db.String(6), nullable=True)

class LoginForm(FlaskForm):
email = StringField('Email', validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')

class OTPForm(FlaskForm):
otp = StringField('OTP', validators=[DataRequired()])
submit = SubmitField('Verify')

@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user and user.password == form.password.data:
otp = str(random.randint(100000, 999999))
user.otp = otp
db.session.commit()
msg = Message('Your OTP Code', sender='your_email@gmail.com', recipients=[user.email])
msg.body = f'Your OTP code is {otp}'
mail.send(msg)
session['email'] = user.email
return redirect(url_for('verify_otp'))
return render_template('login.html', form=form)

@app.route('/verify_otp', methods=['GET', 'POST'])
def verify_otp():
form = OTPForm()
if form.validate_on_submit():
user = User.query.filter_by(email=session['email']).first()
if user and user.otp == form.otp.data:
user.otp = None
db.session.commit()
return 'Login Successful'
return render_template('verify_otp.html', form=form)

if __name__ == '__main__':
db.create_all()
app.run(debug=True)