Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @app.route('/slyko/signin', methods=['GET', 'POST'])
- def signin():
- username = username_from_cookie(request.cookies.get('userID'))
- if username:
- return redirect(url_for('homepage'))
- error = None
- if request.method == 'POST':
- if valid_login(request.form['username'], request.form['password']):
- return log_the_user_in(request.form['username'])
- else:
- error = 'Invalid username or password'
- flash('Invalid username or password')
- return render_template('signin.html', error=error)
- @app.route('/slyko/signup', methods=['GET', 'POST'])
- def signup():
- username = username_from_cookie(request.cookies.get('userID'))
- if username:
- return redirect(url_for('homepage'))
- error = None
- if request.method == 'POST':
- if register_user(request.form['username'], request.form['password']):
- return redirect(url_for('signin'))
- else:
- error = "Username exists in app already"
- flash(error)
- return render_template('signup.html', error=error)
- def register_user(username, password):
- if redis.get('slyko:user:' + username + ':password'):
- return False
- password = generate_password_hash(password, method='pbkdf2:sha256', salt_length=16)
- redis.set('slyko:user:' + username + ':password', password)
- return True
- def valid_login(username, password):
- redis_password = redis.get('slyko:user:' + username + ':password')
- if not redis_password:
- return False
- hashed_password = generate_password_hash(password, method='pbkdf2:sha256', salt_length=16)
- if check_password_hash(hashed_password, password):
- return True
- return False
- def log_the_user_in(username):
- import datetime
- expire_date = datetime.datetime.now() + datetime.timedelta(days=1)
- cookie = insert_user_token(username)
- resp = make_response(render_template('main.html', TOPIC_DICT=TOPIC_DICT))
- resp.set_cookie('userID', cookie, expires=expire_date, secure=True, httponly=True)
- return resp
- def insert_user_token(username):
- token = token_generate()
- redis.set('slyko:token:' + token + ':username', username)
- return token
Add Comment
Please, Sign In to add comment