Skip to content
Snippets Groups Projects
Commit f72aab20 authored by kaiyou's avatar kaiyou
Browse files

Support logging in the user

parent e81eaa58
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,6 @@ import flask_wtf
class LoginForm(flask_wtf.FlaskForm):
email = fields.StringField(_('E-mail'), [validators.Email()])
pw = fields.PasswordField(_('Password'), [validators.DataRequired()])
username = fields.StringField(_('Username'), [validators.DataRequired()])
password = fields.PasswordField(_('Password'), [validators.DataRequired()])
submit = fields.SubmitField(_('Sign in'))
......@@ -5,14 +5,14 @@ import flask_login
import flask
@blueprint.route("/login")
@blueprint.route("/login", methods=["GET", "POST"])
def login():
form = forms.LoginForm()
if form.validate_on_submit():
user = models.User.login(form.username, form.password)
user = models.User.login(form.username.data, form.password.data)
if user:
flask_login.login_user(user)
endpoint = flask.request.args.get("next", "/")
endpoint = flask.request.args.get("next", "account.login")
return flask.redirect(flask.url_for(endpoint, **flask.request.args))
else:
flask.flash("Wrong credentials")
......
{% extends "base.html" %}
<h1>Test</h1>
{% block title %}Log in{% endblock %}
{% block subtitle %}{% endblock %}
{% block content %}
<form method="POST" action="{{ url_for("account.login") }}">
{{ form.hidden_tag() }}
{{ form.username }}
{{ form.password }}
{{ form.submit }}
</form>
{% endblock %}
......@@ -68,6 +68,18 @@ class User(db.Model):
def get(cls, id):
return cls.query.get(id)
@classmethod
def login(cls, username, password):
user = cls.query.filter_by(username=username).first()
if not user:
return False
auth = Auth.query.filter_by(user_id=user.id).first()
if not auth:
return False
if not auth.check_password(password):
return False
return user
def get_id(self):
return self.id
......@@ -97,7 +109,7 @@ class Auth(db.Model):
self.value = hash.pbkdf2_sha256.hash(password)
def check_password(self, password):
return hash.pbkdf2_sha256.verify(password, self.password)
return hash.pbkdf2_sha256.verify(password, self.value)
class Service(db.Model):
......
......@@ -18,12 +18,8 @@
<aside class="main-sidebar">
<section class="sidebar">
{% if current_user %}
<div class="user-panel">
<div class="info">
<p>{{ current_user.username }}</p>
</div>
</div>
{% if current_user.is_authenticated %}
<h4 class="text-center text-primary">{{ current_user.username }}</h4>
{% endif %}
<ul class="sidebar-menu" data-widget="tree">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment