summaryrefslogtreecommitdiffstats
path: root/accounts/views/login/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'accounts/views/login/__init__.py')
-rw-r--r--accounts/views/login/__init__.py38
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'))