diff options
Diffstat (limited to 'accounts/views/login/__init__.py')
-rw-r--r-- | accounts/views/login/__init__.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/accounts/views/login/__init__.py b/accounts/views/login/__init__.py new file mode 100644 index 0000000..4546b14 --- /dev/null +++ b/accounts/views/login/__init__.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import + +from flask import Blueprint +from flask import current_app, redirect, request, g, flash, render_template, url_for +from flask.ext.login import login_user, logout_user, current_user + +from .forms import LoginForm + + +bp = Blueprint('login', __name__) + + +@bp.route('/login', methods=['GET', 'POST']) +def login(): + if current_user.is_authenticated: + return redirect(url_for('default.index')) + + form = LoginForm(request.form) + if form.validate_on_submit(): + try: + user = current_app.user_backend.auth(form.username.data, + form.password.data) + login_user(user) + flash(u'Erfolgreich eingeloggt', 'success') + return redirect(url_for('default.index')) + except (current_app.user_backend.NoSuchUserError, + current_app.user_backend.InvalidPasswordError): + flash(u'Ungültiger Benutzername und/oder Passwort', 'error') + + return render_template("login/login.html", form=form) + + +@bp.route('/logout') +def logout(): + logout_user() + flash(u'Erfolgreich ausgeloggt.', 'success') + return redirect(url_for('.login')) |