Guest User

Untitled

a guest
Jul 19th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. from flask import *
  2. from forms import *
  3. from models import *
  4. from flask_sqlalchemy import SQLAlchemy
  5.  
  6.  
  7. app = Flask(__name__)
  8. app.secret_key = 'guess-it'
  9. app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.sqlite3'
  10. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  11.  
  12. db = SQLAlchemy(app)
  13.  
  14. @app.route('/')
  15. @app.route('/home')
  16. def home():
  17. return render_template('homepage.html', title='Home')#, 404
  18.  
  19. @app.route('/about')
  20. def about():
  21. return render_template('about.html', title='About')
  22.  
  23. @app.route('/subscription', methods=['GET', 'POST'])
  24. def sign():
  25. form = CustomForm('Register')
  26. if form.validate_on_submit():
  27. flash('User %s registered!' % form.user.data, 'info')
  28. session['username'] = form.user.data
  29. session['password'] = form.passw.data
  30. session['logged'] = True
  31. user = User(username=session['username'], psw_hash=bcrypt.hashpw(session['password'].encode('utf8'), bcrypt.gensalt()))
  32. db.session.add(user)
  33. db.session.commit()
  34. return redirect('/home')
  35. return render_template('signup.html', title='Sign Up', form=form)
  36.  
  37. def dict_factory(cursor, row):
  38. d = {}
  39. for idx, col in enumerate(cursor.description):
  40. d[col[0]] = row[idx]
  41. return d
  42.  
  43. @app.route('/login', methods=['GET', 'POST']) #ainda não totalmente implementado!
  44. def login():
  45. import sqlite3
  46. con = sqlite3.connect('users.sqlite3')
  47. con.row_factory = dict_factory
  48. cursor = con.cursor()#dictionary=True, buffered=True)
  49. form = CustomForm('Login')
  50. if form.validate_on_submit():
  51. session['username'] = form.user.data
  52. session['password'] = form.passw.data
  53. cursor.execute(f"SELECT * FROM user WHERE username = {session['username']}")
  54. if cursor is not None:
  55. data = cursor.fetchone()
  56. try:
  57. password = data['psw_hash']
  58. except:
  59. return
  60. if bcrypt.checkpw(session['password'].encode('utf8'), password):
  61. session['logged'] = True
  62. flash('Successfull login!')
  63. cursor.close()
  64. return
  65. return render_template('login.html')
  66. return
  67. return render_template('login.html', title='Login', form=form)
  68.  
  69. @app.route('/contact')
  70. def contact():
  71. return render_template('contact.html', title='Contact')
  72.  
  73. @app.route('/turma')
  74. def turma():
  75. return render_template('turminha.html', title='Turma')
  76.  
  77. @app.route('/logout')
  78. def logout():
  79. session.pop('username')#, None)
  80. session['logged'] = False
  81. return render_template('logout.html')
  82.  
  83. if __name__ == '__main__':
  84. db.create_all()
  85. app.run(debug=True)
  86.  
  87. from flask_wtf import FlaskForm
  88. from wtforms import *
  89. from wtforms.validators import DataRequired
  90.  
  91. class CustomForm(FlaskForm):
  92. def __init__(self, submit_text):
  93. self.user = StringField('Username', validators=[DataRequired()])
  94. self.passw = PasswordField('Password', validators=[DataRequired()])
  95. self.submit = SubmitField(submit_text)
  96.  
  97. from routes import db
  98. import bcrypt
  99.  
  100. class User(db.Model):
  101. id = db.Column(db.Integer, primary_key=True)
  102. username = db.Column(db.String(32), index=True, unique=True)
  103. psw_hash = db.Column(db.String(128))
  104.  
  105. def __repr__(self):
  106. return f'User {self.username}'
Add Comment
Please, Sign In to add comment