docker-k8s-devops/chapter5/labs/flask-skeleton/skeleton/server/user/views.py

63 lines
1.8 KiB
Python
Executable File

# Copyright 2016 Cisco Systems, Inc.
# All rights reserved.
from flask import render_template, Blueprint, url_for, \
redirect, flash, request
from flask_login import login_user, logout_user, login_required
from skeleton.server import bcrypt, db
from skeleton.server.models import User
from skeleton.server.user.forms import LoginForm, RegisterForm
user_blueprint = Blueprint('user', __name__,)
@user_blueprint.route('/register', methods=['GET', 'POST'])
def register():
form = RegisterForm(request.form)
if form.validate_on_submit():
user = User(
email=form.email.data,
password=form.password.data
)
db.session.add(user)
db.session.commit()
login_user(user)
flash('Thank you for registering.', 'success')
return redirect(url_for("user.members"))
return render_template('user/register.html', form=form)
@user_blueprint.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm(request.form)
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user and bcrypt.check_password_hash(
user.password, request.form['password']):
login_user(user)
flash('You are logged in. Welcome!', 'success')
return redirect(url_for('user.members'))
else:
flash('Invalid email and/or password.', 'danger')
return render_template('user/login.html', form=form)
return render_template('user/login.html', title='Please Login', form=form)
@user_blueprint.route('/logout')
@login_required
def logout():
logout_user()
flash('You were logged out. Bye!', 'success')
return redirect(url_for('main.home'))
@user_blueprint.route('/members')
@login_required
def members():
return render_template('user/members.html')