Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1.  
  2. # A very simple Flask Hello World app for you to get started with...
  3.  
  4. from flask import Flask, redirect, url_for, render_template
  5. from flask_login import LoginManager, UserMixin, current_user, login_user, login_required, logout_user
  6. from werkzeug.security import generate_password_hash, check_password_hash
  7. from pony.orm import Database, Required, Optional, db_session, select
  8. import keygen
  9.  
  10.  
  11.  
  12. app = Flask(__name__)
  13. app.secret_key = keygen.generate()
  14. login = LoginManager(app)
  15. login.login_view = 'login'
  16.  
  17. db = Database()
  18.  
  19. class User(UserMixin, db.Entity):
  20.  
  21. username = Required(str, unique=True)
  22. password_hash = Optional(str)
  23.  
  24. @db_session
  25. def set_password(self, password):
  26. self.password_hash = generate_password_hash(password)
  27.  
  28. @db_session
  29. def check_password(self, password):
  30. return check_password_hash(self.password_hash, password)
  31.  
  32. def __repr__(self):
  33. return '<User {}>'.format(self.username)
  34.  
  35. db.bind(provider='sqlite', filename='mydb', create_db=True)
  36. db.generate_mapping(create_tables=True)
  37.  
  38.  
  39. @login.user_loader
  40. @db_session
  41. def load_user(id):
  42. return User.get(id=int(id))
  43.  
  44.  
  45. @app.route('/')
  46. def index():
  47. return 'Hello from Flask!'
  48.  
  49. @app.route('/login', methods=['GET', 'POST'])
  50. @db_session
  51. def login():
  52.  
  53. if current_user.is_authenticated:
  54. return redirect(url_for('index'))
  55.  
  56. form = LoginForm()
  57.  
  58. if form.validate_on_submit():
  59. user = User.get(username=form.username.data)
  60.  
  61. if user is None or not user.check_password(form.password.data):
  62. return redirect(url_for('login'))
  63.  
  64. login_user(user) # remember=form.remember_me.data)
  65. return redirect(url_for('index'))
  66.  
  67. return render_template('login.html', title='Sign In', form=form)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement