Guest User

Auth

a guest
Nov 11th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.49 KB | None | 0 0
  1. import functools
  2.  
  3. from flask import( Blueprint, flash, g, redirect, render_template, request, session, url_for)
  4.  
  5. from werkzeug.security import check_password_hash, generate_password_hash
  6.  
  7. from blogr.db import get_db
  8.  
  9. bp = Blueprint('auth', __name__, url_prefix='/auth')
  10.  
  11. @bp.route('/signup', methods=('GET', 'POST'))
  12.  
  13. def signup():
  14.     if request.method == 'POST':
  15.         username = request.form['username']
  16.         password = request.form['password']
  17.         db = get_db()
  18.         error = None
  19.  
  20.         if not username:
  21.             error = 'Username is required '
  22.         elif not password:
  23.             error = 'Password is required'
  24.         elif db.execute(
  25.             'SELECT id FROM user WHERE username = ?', (username,)
  26.         ).fetchone() is not None:
  27.             error = 'User {} is already registered.'.format(username)
  28.        
  29.         if error is None:
  30.             db.execute(
  31.                 'INSERT INTO user(username, password) VALUES (?, ?)', (username, generate_password_hash(password))
  32.             )
  33.             db.commit()
  34.             return redirect(url_for('auth.login'))
  35.         flash(error)
  36.     return render_template('auth/register.html')
  37.  
  38.  
  39. @bp.route('/login', methods=('GET', 'POST'))
  40. def login():
  41.     if request.method == 'POST':
  42.         username = request.form['username']
  43.         password = request.form['password']
  44.         db = get_db()
  45.         error = None
  46.         user = db.execute(
  47.             'SELECT * FROM user WHERE username = ?',(username,)
  48.         ).fetchone()
  49.  
  50.         if user is None:
  51.             error = 'Incorrect username'
  52.         elif not check_password_hash(user['password'], password):
  53.             error = 'Incorrect Password'
  54.        
  55.         if error is None:
  56.             session.clear()
  57.             session['user_id'] = user['id']
  58.             return redirect(url_for('index'))
  59.         flash(error)
  60.     return render_template('auth/login.html')
  61.  
  62. @bp.before_app_request
  63. def load_logged_in_user():
  64.     user_id = session.get('user_id')
  65.  
  66.     if user_id is None:
  67.         g.user = None
  68.     else:
  69.         g.user = get_db().execute(
  70.             'SELECT * FROM user WHERE id = ?', (user_id,)
  71.         ).fetchone
  72.  
  73. @bp.route('/logout')
  74. def logout():
  75.     session.clear()
  76.     return redirect(url_for('index'))
  77.  
  78.  
  79. def login_required(view):
  80.     @functools.wraps(view)
  81.     def wrapped_view(**kwargs):
  82.         if g.user is None:
  83.             return redirect(url_for('auth.login'))
  84.         return view(**kwargs)
  85.     return wrapped_view
Add Comment
Please, Sign In to add comment