-
Notifications
You must be signed in to change notification settings - Fork 792
Expand file tree
/
Copy pathviews.py
More file actions
69 lines (57 loc) · 2 KB
/
views.py
File metadata and controls
69 lines (57 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#################
#### imports ####
#################
from flask import flash, redirect, render_template, request, \
url_for, Blueprint # pragma: no cover
from flask_login import login_user, \
login_required, logout_user # pragma: no cover
from .forms import LoginForm, RegisterForm # pragma: no cover
from project import db # pragma: no cover
from project.models import User, bcrypt # pragma: no cover
################
#### config ####
################
users_blueprint = Blueprint(
'users', __name__,
template_folder='templates'
) # pragma: no cover
################
#### routes ####
################
@users_blueprint.route('/login', methods=['GET', 'POST']) # pragma: no cover
def login():
error = None
form = LoginForm(request.form)
if request.method == 'POST':
if form.validate_on_submit():
user = User.query.filter_by(name=request.form['username']).first()
if user is not None and bcrypt.check_password_hash(
user.password, request.form['password']
):
login_user(user)
flash('You were logged in. Go Crazy.')
return redirect(url_for('home.home'))
else:
error = 'Invalid username or password.'
return render_template('login.html', form=form, error=error)
@users_blueprint.route('/logout') # pragma: no cover
@login_required # pragma: no cover
def logout():
logout_user()
flash('You were logged out.')
return redirect(url_for('home.welcome'))
@users_blueprint.route(
'/register/', methods=['GET', 'POST']) # pragma: no cover
def register():
form = RegisterForm()
if form.validate_on_submit():
user = User(
name=form.username.data,
email=form.email.data,
password=form.password.data
)
db.session.add(user)
db.session.commit()
login_user(user)
return redirect(url_for('home.home'))
return render_template('register.html', form=form)