public.py 2.37 KB
Newer Older
David Baumgold committed
1 2 3
"""
Public views
"""
4
from django.conf import settings
5
from django.template.context_processors import csrf
6
from django.core.urlresolvers import reverse
Steve Strassmann committed
7
from django.shortcuts import redirect
8 9
from django.views.decorators.clickjacking import xframe_options_deny
from django.views.decorators.csrf import ensure_csrf_cookie
Steve Strassmann committed
10

David Baumgold committed
11
from edxmako.shortcuts import render_to_response
12
from openedx.core.djangoapps.external_auth.views import redirect_with_get, ssl_get_cert_from_request, ssl_login_shortcut
13
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
14

15
__all__ = ['signup', 'login_page', 'howitworks']
Steve Strassmann committed
16

17

18
@ensure_csrf_cookie
19
@xframe_options_deny
20 21 22 23 24
def signup(request):
    """
    Display the signup form.
    """
    csrf_token = csrf(request)['csrf_token']
25
    if request.user.is_authenticated():
26
        return redirect('/course/')
27
    if settings.FEATURES.get('AUTH_USE_CERTIFICATES_IMMEDIATE_SIGNUP'):
28 29
        # Redirect to course to login to process their certificate if SSL is enabled
        # and registration is disabled.
30
        return redirect_with_get('login', request.GET, False)
31

32
    return render_to_response('register.html', {'csrf': csrf_token})
33 34 35 36


@ssl_login_shortcut
@ensure_csrf_cookie
37
@xframe_options_deny
38 39 40 41 42
def login_page(request):
    """
    Display the login form.
    """
    csrf_token = csrf(request)['csrf_token']
43
    if (settings.FEATURES['AUTH_USE_CERTIFICATES'] and
44 45 46 47
            ssl_get_cert_from_request(request)):
        # SSL login doesn't require a login view, so redirect
        # to course now that the user is authenticated via
        # the decorator.
48 49 50 51
        next_url = request.GET.get('next')
        if next_url:
            return redirect(next_url)
        else:
52
            return redirect('/course/')
53 54 55 56
    if settings.FEATURES.get('AUTH_USE_CAS'):
        # If CAS is enabled, redirect auth handling to there
        return redirect(reverse('cas-login'))

57 58 59 60 61
    return render_to_response(
        'login.html',
        {
            'csrf': csrf_token,
            'forgot_password_link': "//{base}/login#forgot-password-modal".format(base=settings.LMS_BASE),
62
            'platform_name': configuration_helpers.get_value('platform_name', settings.PLATFORM_NAME),
63 64
        }
    )
65 66 67


def howitworks(request):
David Baumgold committed
68
    "Proxy view"
69
    if request.user.is_authenticated():
70
        return redirect('/home/')
71 72
    else:
        return render_to_response('howitworks.html', {})