diff --git a/trurt/account/forms.py b/trurt/account/forms.py index 78ff46cc67ce8976bc196df4795626ff4825734f..b3b1c82c53f79c5e0d285b428cf0444a670df4ab 100644 --- a/trurt/account/forms.py +++ b/trurt/account/forms.py @@ -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')) diff --git a/trurt/account/login.py b/trurt/account/login.py index dd4609baae636a37b2fc977c22217310852001e3..bc76474290d53535b96bc26cc85ab4d47e25fe9e 100644 --- a/trurt/account/login.py +++ b/trurt/account/login.py @@ -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") diff --git a/trurt/account/templates/account_login.html b/trurt/account/templates/account_login.html index 8aa4a92f30e2b4828be02ef231c849d2cf542db5..8db7bb235615b7d019ded5d3cb6ccbb0b4db7aa0 100644 --- a/trurt/account/templates/account_login.html +++ b/trurt/account/templates/account_login.html @@ -1,3 +1,13 @@ {% 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 %} diff --git a/trurt/models.py b/trurt/models.py index c03b7042a89087a484660b31bfdbcf1b85e0eb32..57b3338017df75c3a61e1b7a29404a27299e17ab 100644 --- a/trurt/models.py +++ b/trurt/models.py @@ -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): diff --git a/trurt/templates/base.html b/trurt/templates/base.html index c6a6a9e247ca897b6818c3c5a23f6c1943f344fc..a16c46dcea1081ecfd0946616ebc9c381e133a26 100644 --- a/trurt/templates/base.html +++ b/trurt/templates/base.html @@ -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">