diff --git a/script/bak.py b/script/bak.py new file mode 100644 index 0000000..ef8f91a --- /dev/null +++ b/script/bak.py @@ -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) \ No newline at end of file