Skip to content

Commit 5e5e992

Browse files
committed
updated user auth
1 parent cacfc2e commit 5e5e992

File tree

4 files changed

+49
-15
lines changed

4 files changed

+49
-15
lines changed

db_create_users.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
from project.models import User
33

44
# insert data
5-
# db.session.add(User("michael", "[email protected]", "i'll-never-tell"))
6-
# db.session.add(User("admin", "[email protected]", "admin"))
5+
db.session.add(User("michael", "[email protected]", "i'll-never-tell"))
6+
db.session.add(User("admin", "[email protected]", "admin"))
77
db.session.add(User("mike", "[email protected]", "tell"))
88

99
# commit the changes

project/users/forms.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from flask_wtf import Form
2+
from wtforms import TextField, PasswordField
3+
from wtforms.validators import DataRequired
4+
5+
6+
class LoginForm(Form):
7+
username = TextField('Username', validators=[DataRequired()])
8+
password = PasswordField('Password', validators=[DataRequired()])

project/users/templates/login.html

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,32 @@
11
{% extends "base.html" %}
2+
23
{% block content %}
34

45
<h1>Please login</h1>
56
<br>
6-
<form action="" method="post">
7-
<input type="text" placeholder="Username" name="username" value="{{request.form.username }}">
8-
<input type="password" placeholder="Password" name="password" value="{{request.form.password }}">
9-
<input class="btn btn-default" type="submit" value="Login">
7+
<form class="form-signin" role="form" method="post" action="">
8+
{{ form.csrf_token }}
9+
<p>
10+
{{ form.username(placeholder="username") }}
11+
<span class="error">
12+
{% if form.username.errors %}
13+
{% for error in form.username.errors %}
14+
{{ error }}
15+
{% endfor %}
16+
{% endif %}
17+
</span>
18+
</p>
19+
<p>
20+
{{ form.password(placeholder="password") }}
21+
<span class="error">
22+
{% if form.password.errors %}
23+
{% for error in form.password.errors %}
24+
{{ error }}
25+
{% endfor %}
26+
{% endif %}
27+
</span>
28+
</p>
29+
<button class="btn btn-sm btn-success" type="submit">Sign in</button>
1030
</form>
1131

1232
{% endblock %}

project/users/views.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from flask import flash, redirect, render_template, request, \
66
session, url_for, Blueprint
77
from functools import wraps
8+
from forms import LoginForm
9+
from project.models import User, bcrypt
810

911
################
1012
#### config ####
@@ -35,19 +37,23 @@ def wrap(*args, **kwargs):
3537
#### routes ####
3638
################
3739

38-
# route for handling the login page logic
3940
@users_blueprint.route('/login', methods=['GET', 'POST'])
4041
def login():
4142
error = None
43+
form = LoginForm(request.form)
4244
if request.method == 'POST':
43-
if (request.form['username'] != 'admin') \
44-
or request.form['password'] != 'admin':
45-
error = 'Invalid Credentials. Please try again.'
46-
else:
47-
session['logged_in'] = True
48-
flash('You were logged in.')
49-
return redirect(url_for('home.home'))
50-
return render_template('login.html', error=error)
45+
if form.validate_on_submit():
46+
user = User.query.filter_by(name=request.form['username']).first()
47+
if user is not None and bcrypt.check_password_hash(
48+
user.password, request.form['password']
49+
):
50+
session['logged_in'] = True
51+
flash('You were logged in. Go Crazy.')
52+
return redirect(url_for('home.home'))
53+
54+
else:
55+
error = 'Invalid username or password.'
56+
return render_template('login.html', form=form, error=error)
5157

5258

5359
@users_blueprint.route('/logout')

0 commit comments

Comments
 (0)