Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import *
- from forms import *
- from models import *
- from flask_sqlalchemy import SQLAlchemy
- app = Flask(__name__)
- app.secret_key = 'guess-it'
- app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.sqlite3'
- app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
- db = SQLAlchemy(app)
- @app.route('/')
- @app.route('/home')
- def home():
- return render_template('homepage.html', title='Home')#, 404
- @app.route('/about')
- def about():
- return render_template('about.html', title='About')
- @app.route('/subscription', methods=['GET', 'POST'])
- def sign():
- form = CustomForm('Register')
- if form.validate_on_submit():
- flash('User %s registered!' % form.user.data, 'info')
- session['username'] = form.user.data
- session['password'] = form.passw.data
- session['logged'] = True
- user = User(username=session['username'], psw_hash=bcrypt.hashpw(session['password'].encode('utf8'), bcrypt.gensalt()))
- db.session.add(user)
- db.session.commit()
- return redirect('/home')
- return render_template('signup.html', title='Sign Up', form=form)
- def dict_factory(cursor, row):
- d = {}
- for idx, col in enumerate(cursor.description):
- d[col[0]] = row[idx]
- return d
- @app.route('/login', methods=['GET', 'POST']) #ainda não totalmente implementado!
- def login():
- import sqlite3
- con = sqlite3.connect('users.sqlite3')
- con.row_factory = dict_factory
- cursor = con.cursor()#dictionary=True, buffered=True)
- form = CustomForm('Login')
- if form.validate_on_submit():
- session['username'] = form.user.data
- session['password'] = form.passw.data
- cursor.execute(f"SELECT * FROM user WHERE username = {session['username']}")
- if cursor is not None:
- data = cursor.fetchone()
- try:
- password = data['psw_hash']
- except:
- return
- if bcrypt.checkpw(session['password'].encode('utf8'), password):
- session['logged'] = True
- flash('Successfull login!')
- cursor.close()
- return
- return render_template('login.html')
- return
- return render_template('login.html', title='Login', form=form)
- @app.route('/contact')
- def contact():
- return render_template('contact.html', title='Contact')
- @app.route('/turma')
- def turma():
- return render_template('turminha.html', title='Turma')
- @app.route('/logout')
- def logout():
- session.pop('username')#, None)
- session['logged'] = False
- return render_template('logout.html')
- if __name__ == '__main__':
- db.create_all()
- app.run(debug=True)
- from flask_wtf import FlaskForm
- from wtforms import *
- from wtforms.validators import DataRequired
- class CustomForm(FlaskForm):
- def __init__(self, submit_text):
- self.user = StringField('Username', validators=[DataRequired()])
- self.passw = PasswordField('Password', validators=[DataRequired()])
- self.submit = SubmitField(submit_text)
- from routes import db
- import bcrypt
- class User(db.Model):
- id = db.Column(db.Integer, primary_key=True)
- username = db.Column(db.String(32), index=True, unique=True)
- psw_hash = db.Column(db.String(128))
- def __repr__(self):
- return f'User {self.username}'
Add Comment
Please, Sign In to add comment