def login(): """Login page for users """ form = LoginForm() if form.validate_on_submit(): dormitory = dormitory_from_name(form.dormitory.data) username = form.username.data password = form.password.data remember = form.remember.data User = dormitory.datasource.user_class try: user = User.authenticate(username, password) except (UserNotFound, PasswordInvalid): flash(gettext("Anmeldedaten fehlerhaft!"), "error") else: if isinstance(user, User): session['dormitory'] = dormitory.name login_user(user, remember=remember) logger.info('Authentication successful') flash(gettext("Anmeldung erfolgreich!"), "success") elif form.is_submitted(): flash_formerrors(form) if current_user.is_authenticated: return redirect(url_for('usersuite.usersuite')) return render_template('login.html', form=form, unsupported=unsupported_dormitories)
def contact(): form = AnonymousContactForm() if form.validate_on_submit(): from_mail = form.email.data subject = "[Kontakt] {}".format(form.subject.data) message = form.message.data dormitory = dormitory_from_name(form.dormitory.data) support_mail = dormitory.datasource.support_mail if send_mail(from_mail, support_mail, subject, message): flash(gettext("Nachricht wurde versandt."), "success") else: flash(gettext("Es gab einen Fehler beim Versenden der Nachricht."), 'error') return redirect(url_for(".index")) elif form.is_submitted(): flash_formerrors(form) elif current_user.is_authenticated: flash( gettext("Sicher, dass Du das anonyme Formular " "benutzen möchtest? Dies ist nur erforderlich, wenn Du " "Administratoren eines anderen Wohnheims " "kontaktieren willst."), 'info') return render_template('anonymous_contact.html', form=form)
def load_user(username): """Loads a User object from/into the session at every request """ dormitory = dormitory_from_name(session.get('dormitory', None)) if dormitory: return dormitory.datasource.user_class.get(username) else: return AnonymousUserMixin()
def login(): """Login page for users """ form = LoginForm() if form.validate_on_submit(): dormitory = dormitory_from_name(form.dormitory.data) username = form.username.data password = form.password.data remember = form.remember.data User = dormitory.datasource.user_class valid_suffix = "@{}".format(dormitory.datasource.mail_server) if username.endswith(valid_suffix): username = username[:-len(valid_suffix)] try: user = User.authenticate(username, password) except (UserNotFound, PasswordInvalid) as e: cause = "username" if isinstance(e, UserNotFound) else "password" logger.info( "Authentication failed: Wrong %s", cause, extra={'tags': { 'user': username, 'rate_critical': True }}) flash(gettext("Anmeldedaten fehlerhaft!"), "error") else: if isinstance(user, User): session['dormitory'] = dormitory.name login_user(user, remember=remember) logger.info('Authentication successful', extra={'tags': { 'user': username }}) flash(gettext("Anmeldung erfolgreich!"), "success") elif form.is_submitted(): flash_formerrors(form) if current_user.is_authenticated: return redirect(url_for('usersuite.usersuite')) return render_template('login.html', form=form, unsupported=premature_dormitories)
def contact(): form = AnonymousContactForm() if form.validate_on_submit(): from_mail = form.email.data subject = "[Kontakt] {}".format(form.subject.data) message = form.message.data dormitory = dormitory_from_name(form.dormitory.data) support_mail = dormitory.datasource.support_mail if send_mail(from_mail, support_mail, subject, message): flash(gettext("Nachricht wurde versandt."), "success") else: flash(gettext("Es gab einen Fehler beim Versenden der Nachricht."), 'error') return redirect(url_for(".index")) elif form.is_submitted(): flash_formerrors(form) return render_template('anonymous_contact.html', form=form)