def login(request): """ Render and process a most basic login form. Takes an URL as GET parameter "next" for redirection after successful login """ ctx = {} if request.user.is_authenticated: return redirect(request.GET.get("next", 'control:index')) if request.method == 'POST': form = LoginForm(data=request.POST) if form.is_valid() and form.user_cache: request.session['pretix_auth_long_session'] = ( settings.PRETIX_LONG_SESSIONS and form.cleaned_data.get('keep_logged_in', False) ) if form.user_cache.require_2fa: request.session['pretix_auth_2fa_user'] = form.user_cache.pk request.session['pretix_auth_2fa_time'] = str(int(time.time())) twofa_url = reverse('control:auth.login.2fa') if "next" in request.GET and is_safe_url(request.GET.get("next"), allowed_hosts=None): twofa_url += '?next=' + quote(request.GET.get('next')) return redirect(twofa_url) else: auth_login(request, form.user_cache) request.session['pretix_auth_login_time'] = int(time.time()) if "next" in request.GET and is_safe_url(request.GET.get("next"), allowed_hosts=None): return redirect(request.GET.get("next")) return redirect(reverse('control:index')) else: form = LoginForm() ctx['form'] = form ctx['can_register'] = settings.PRETIX_REGISTRATION ctx['can_reset'] = settings.PRETIX_PASSWORD_RESET return render(request, 'pretixcontrol/auth/login.html', ctx)
def login(request): """ Render and process a most basic login form. Takes an URL as GET parameter "next" for redirection after successful login """ ctx = {} if request.user.is_authenticated: return redirect(request.GET.get("next", 'control:index')) if request.method == 'POST': form = LoginForm(data=request.POST) if form.is_valid() and form.user_cache: request.session['pretix_auth_long_session'] = ( settings.PRETIX_LONG_SESSIONS and form.cleaned_data.get('keep_logged_in', False)) if form.user_cache.require_2fa: request.session['pretix_auth_2fa_user'] = form.user_cache.pk request.session['pretix_auth_2fa_time'] = str(int(time.time())) twofa_url = reverse('control:auth.login.2fa') if "next" in request.GET and is_safe_url( request.GET.get("next")): twofa_url += '?next=' + quote(request.GET.get('next')) return redirect(twofa_url) else: auth_login(request, form.user_cache) request.session['pretix_auth_login_time'] = int(time.time()) if "next" in request.GET and is_safe_url( request.GET.get("next")): return redirect(request.GET.get("next")) return redirect(reverse('control:index')) else: form = LoginForm() ctx['form'] = form ctx['can_register'] = settings.PRETIX_REGISTRATION ctx['can_reset'] = settings.PRETIX_PASSWORD_RESET return render(request, 'pretixcontrol/auth/login.html', ctx)
def login(request): """ Render and process a most basic login form. Takes an URL as GET parameter "next" for redirection after successful login """ ctx = {} if request.user.is_authenticated(): return redirect(request.GET.get("next", 'control:index')) if request.method == 'POST': form = LoginForm(data=request.POST) if form.is_valid() and form.user_cache: auth_login(request, form.user_cache) if "next" in request.GET: return redirect(request.GET.get("next", 'control:index')) return redirect('control:index') else: form = LoginForm() ctx['form'] = form return render(request, 'pretixcontrol/auth/login.html', ctx)
def login(request): """ Render and process a most basic login form. Takes an URL as GET parameter "next" for redirection after successful login """ ctx = {} backenddict = get_auth_backends() backends = sorted(backenddict.values(), key=lambda b: (b.identifier != "native", b.verbose_name)) for b in backends: u = b.request_authenticate(request) if u and u.auth_backend == b.identifier: return process_login(request, u, False) b.url = b.authentication_url(request) backend = backenddict.get(request.GET.get('backend', 'native'), backends[0]) if not backend.visible: backend = [b for b in backends if b.visible][0] if request.user.is_authenticated: next_url = backend.get_next_url(request) or 'control:index' if next_url and url_has_allowed_host_and_scheme(next_url, allowed_hosts=None): return redirect(next_url) return redirect(reverse('control:index')) if request.method == 'POST': form = LoginForm(backend=backend, data=request.POST, request=request) if form.is_valid( ) and form.user_cache and form.user_cache.auth_backend == backend.identifier: return process_login( request, form.user_cache, form.cleaned_data.get('keep_logged_in', False)) else: form = LoginForm(backend=backend, request=request) ctx['form'] = form ctx['can_register'] = settings.PRETIX_REGISTRATION ctx['can_reset'] = settings.PRETIX_PASSWORD_RESET ctx['backends'] = backends ctx['backend'] = backend return render(request, 'pretixcontrol/auth/login.html', ctx)