Guest User

Untitled

a guest
Oct 10th, 2016
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.37 KB | None | 0 0
  1. import uuid
  2. import hashlib
  3. from extensions import db
  4.  
  5. from flask import (
  6.     Blueprint,
  7.     request,
  8.     session,
  9.     url_for,
  10.     redirect,
  11.     render_template
  12. )
  13.  
  14. user = Blueprint('user', __name__, template_folder='templates')
  15.  
  16.  
  17. @user.route('/login', methods=['GET', 'POST'])
  18. def login_route():
  19.     if request.method == 'GET':
  20.         options = {
  21.             'error': False,
  22.             'message': ''
  23.         }
  24.         return render_template('login.html', **options)
  25.     else:
  26.         username = request.form.get('username')
  27.         password = request.form.get('password')
  28.         cur = db.cursor()
  29.         cur.execute("SELECT `password` FROM User WHERE `username`=%s;", (username, ))
  30.         result = cur.fetchone()
  31.         # check if user enter valid password
  32.         if result['password'] == get_hash(password, result['password'].split('$')[1]):
  33.             session['username'] = username
  34.             return redirect(url_for('main.main_route'))
  35.         return True
  36.  
  37.  
  38. @user.route('/logout', methods=['POST'])
  39. def logout_route():
  40.     session.pop('username', None)
  41.     return redirect(url_for('main.main_route'))
  42.  
  43.  
  44. @user.route('/user', methods=['GET'])
  45. def register_route():
  46.     if 'username' in session:
  47.         return redirect(url_for('user.user_edit_route'))
  48.     options = {
  49.         'error': False,
  50.         'message': ''
  51.     }
  52.     return render_template("signup.html", **options)
  53.  
  54.  
  55. @user.route('/user', methods=['POST'])
  56. def register_post_route():
  57.     new_user = {
  58.         'username': request.form.get('username'),
  59.         'firstname': request.form.get('firstname'),
  60.         'lastname': request.form.get('lastname'),
  61.         'password1': request.form.get('password1'),
  62.         'password2': request.form.get('password2'),
  63.         'email': request.form.get('email')
  64.     }
  65.     if 'username' in session:
  66.         return redirect(url_for('user.user_edit_route'))
  67.     hashed_password = get_hash(new_user['password1'])
  68.  
  69.     cursor = db.cursor()
  70.     query = "INSERT into User(`username`, `firstname`, `lastname`, `password`, `email`) VALUES(%s, %s, %s, %s, %s);"
  71.     cursor.execute(query, (new_user['username'],
  72.                            new_user['firstname'],
  73.                            new_user['lastname'],
  74.                            hashed_password,
  75.                            new_user['email']))
  76.     return redirect(url_for('user.login_route'))
  77.  
  78.  
  79. @user.route('/user/edit', methods=['GET'])
  80. def user_edit_route():
  81.     # TODO check if session already exists, get user data from database and set it to options
  82.     username = 'username'
  83.     firstname = 'firstname'
  84.     lastname = 'lastname'
  85.     email = 'email'
  86.     options = {
  87.         'error': False,
  88.         'message': '',
  89.         'user': {
  90.             'username': username,
  91.             'firstname': firstname,
  92.             'lastname': lastname,
  93.             'email': email
  94.         }
  95.     }
  96.  
  97.     return render_template('user_edit.html', **options)
  98.  
  99.  
  100. @user.route('/user/edit', methods=['POST'])
  101. def user_edit_post_route():
  102.     options = {
  103.     }
  104.     print request.form
  105.     return render_template('user_edit.html', **options)
  106.  
  107.  
  108. def get_hash(password, salt=None):
  109.     algorithm = 'sha512'
  110.     salt = salt if salt else uuid.uuid4().hex
  111.     hash = hashlib.new(algorithm)
  112.     hash.update(salt + password)
  113.     password_hash = hash.hexdigest()
  114.     return '$'.join([algorithm, salt, password_hash])
Add Comment
Please, Sign In to add comment