Example #1
0
def login(request, template_name='cas/login.html', success_redirect=None):
    if not success_redirect:
        success_redirect = settings.LOGIN_REDIRECT_URL
    if not success_redirect:
        success_redirect = '/accounts/profile/'
    service = request.GET.get('service', None)
    if request.user.is_authenticated():
        if service is not None:
            ticket = create_service_ticket(request.user, service)
            if service.find('?') == -1:
                return HttpResponseRedirect(service + '?ticket=' +
                                            ticket.ticket)
            else:
                return HttpResponseRedirect(service + '&ticket=' +
                                            ticket.ticket)
        else:
            return HttpResponseRedirect(success_redirect)
    errors = []
    if request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)
        service = request.POST.get('service', None)
        lt = request.POST.get('lt', None)

        try:
            login_ticket = LoginTicket.objects.get(ticket=lt)
        except:
            errors.append('Login ticket expired. Please try again.')
        else:
            login_ticket.delete()
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    auth_login(request, user)
                    if service is not None:
                        ticket = create_service_ticket(user, service)

                        # Check to see if we already have a query string
                        if service.find('?') == -1:
                            return HttpResponseRedirect(service + '?ticket=' +
                                                        ticket.ticket)
                        else:
                            return HttpResponseRedirect(service + '&ticket=' +
                                                        ticket.ticket)
                    else:
                        return HttpResponseRedirect(success_redirect)
                else:
                    errors.append('This account is disabled.')
            else:
                errors.append('Incorrect username and/or password.')
    form = LoginForm(service)
    return render_to_response(template_name, {
        'form': form,
        'errors': errors
    },
                              context_instance=RequestContext(request))
Example #2
0
def _login(request, template_name='cas/login.html',
          success_redirect=settings.LOGIN_REDIRECT_URL):
    """
    Standard CAS login form.

    Instead of running this directly, we enforce a service whitelist first.
    See whitelist_login().
    """

    service = request.GET.get('service', None)
    # renew=true indicates that we should force the user to log in.
    if False == request.GET.get('renew', False) and request.user.is_authenticated():
        if service is not None:
            ticket = utils.create_service_ticket(request.user, service)
            # TODO Parsing and rebuilding the URL here is a much better idea.
            if service.find('?') == -1:
                return HttpResponseRedirect(service + '?ticket=' + ticket.ticket)
            else:
                return HttpResponseRedirect(service + '&ticket=' + ticket.ticket)
        else:
            return HttpResponseRedirect(success_redirect)

    # gateway=true indicates that we should silently try to authenticate (no
    # login screen).
    if request.GET.get('gateway', False):
        return HttpResponseRedirect(service)
    errors = []
    if request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)
        service = request.POST.get('service', None)
        lt = request.POST.get('lt', None)

        try:
            login_ticket = LoginTicket.objects.get(ticket=lt)
        except:
            errors.append('Login ticket expired. Please try again.')
        else:
            login_ticket.delete()
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    auth_login(request, user)
                    if service is not None:
                        ticket = utils.create_service_ticket(user, service)
                        return HttpResponseRedirect(service + '?ticket=' + ticket.ticket)
                    else:
                        return HttpResponseRedirect(success_redirect)
                else:
                    errors.append('This account is disabled.')
            else:
                    errors.append('Incorrect username and/or password.')
    form = LoginForm(service)
    return jingo.render(request, template_name,
                        {'form': form, 'errors': errors})
Example #3
0
def login(request, template_name='cas/login.html', success_redirect=None ):
    if not success_redirect:
        success_redirect = settings.LOGIN_REDIRECT_URL
    if not success_redirect:
        success_redirect = '/accounts/profile/'
    service = request.GET.get('service', None)
    if request.user.is_authenticated():
        if service is not None:
            if not auth_handler or auth_handler(request.user, service):
                ticket = create_service_ticket(request.user, service)
                if service.find('?') == -1:
                    return HttpResponseRedirect(service + '?ticket=' + ticket.ticket)
                else:
                    return HttpResponseRedirect(service + '&ticket=' + ticket.ticket)
            else:
                return render_to_response('cas/unauthorized.html', {'service': service}, context_instance=RequestContext(request))
        else:
            return HttpResponseRedirect(success_redirect)
    errors = []
    if request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)
        service = request.POST.get('service', None)
        lt = request.POST.get('lt', None)
        
        try:
            login_ticket = LoginTicket.objects.get(ticket=lt)
        except:
            errors.append('Login ticket expired. Please try again.')
        else:
            login_ticket.delete()
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    auth_login(request, user)
                    if not auth_handler or auth_handler(user, service):
                        if service is not None:
                            ticket = create_service_ticket(user, service)
                            # Check to see if we already have a query string
                            if service.find('?') == -1:
                                return HttpResponseRedirect(service + '?ticket=' + ticket.ticket)
                            else:
                                return HttpResponseRedirect(service + '&ticket=' + ticket.ticket)
                        else:
                            return HttpResponseRedirect(success_redirect)
                    else:
                        return render_to_response('cas/unauthorized.html', {'service': service}, context_instance=RequestContext(request))
                else:
                    errors.append('This account is disabled.')
            else:
                    errors.append('Incorrect username and/or password.')
    form = LoginForm(service)
    return render_to_response(template_name, {'form': form, 'errors': errors}, context_instance=RequestContext(request))
Example #4
0
def login(request, template_name="cas/login.html", success_redirect=None):
    if not success_redirect:
        success_redirect = settings.LOGIN_REDIRECT_URL
    if not success_redirect:
        success_redirect = "/accounts/profile/"
    service = request.GET.get("service", None)
    if request.user.is_authenticated():
        if service is not None:
            ticket = create_service_ticket(request.user, service)
            if service.find("?") == -1:
                return HttpResponseRedirect(service + "?ticket=" + ticket.ticket)
            else:
                return HttpResponseRedirect(service + "&ticket=" + ticket.ticket)
        else:
            return HttpResponseRedirect(success_redirect)
    errors = []
    if request.method == "POST":
        username = request.POST.get("username", None)
        password = request.POST.get("password", None)
        service = request.POST.get("service", None)
        lt = request.POST.get("lt", None)

        try:
            login_ticket = LoginTicket.objects.get(ticket=lt)
        except:
            errors.append("Login ticket expired. Please try again.")
        else:
            login_ticket.delete()
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    auth_login(request, user)
                    if service is not None:
                        ticket = create_service_ticket(user, service)

                        # Check to see if we already have a query string
                        if service.find("?") == -1:
                            return HttpResponseRedirect(service + "?ticket=" + ticket.ticket)
                        else:
                            return HttpResponseRedirect(service + "&ticket=" + ticket.ticket)
                    else:
                        return HttpResponseRedirect(success_redirect)
                else:
                    errors.append("This account is disabled.")
            else:
                errors.append("Incorrect username and/or password.")
    form = LoginForm(service)
    return render_to_response(template_name, {"form": form, "errors": errors}, context_instance=RequestContext(request))
Example #5
0
def login(request, template_name='cas_provider/login.html', success_redirect='/accounts/'):
    service = request.GET.get('service', None)
    if request.user.is_authenticated():
        if service is not None:
            ticket = create_service_ticket(request.user, service)
            if service.find('?') == -1:
                return HttpResponseRedirect(service + '?ticket=' + ticket.ticket)
            else:
                return HttpResponseRedirect(service + '&ticket=' + ticket.ticket)
        else:
            return HttpResponseRedirect(success_redirect)
    errors = []
    if request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)
        service = request.POST.get('service', None)
        lt = request.POST.get('lt', None)

        try:
            login_ticket = LoginTicket.objects.get(ticket=lt)
        except:
            errors.append('Login ticket expired. Please try again.')
        else:
            login_ticket.delete()
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    auth_login(request, user)
                    if service is not None:
                        ticket = create_service_ticket(user, service)
                        if service.find('?') == -1:
                            return HttpResponseRedirect(service + '?ticket=' + ticket.ticket)
                        else:
                            return HttpResponseRedirect(service + '&ticket=' + ticket.ticket)
                    else:
                        print success_redirect
                        return HttpResponseRedirect(success_redirect)
                else:
                    errors.append('This account is disabled.')
            else:
                errors.append('Incorrect username and/or password.')

    form = LoginForm(service)
    return render_to_response(template_name, {'form': form, 'errors': errors}, context_instance=RequestContext(request))
Example #6
0
def _login(request,
           template_name='cas/login.html',
           success_redirect=settings.LOGIN_REDIRECT_URL):
    """
    Standard CAS login form.

    Instead of running this directly, we enforce a service whitelist first.
    See whitelist_login().
    """

    service = request.GET.get('service', None)
    # renew=true indicates that we should force the user to log in.
    if False == request.GET.get('renew',
                                False) and request.user.is_authenticated():
        if service is not None:
            ticket = utils.create_service_ticket(request.user, service)
            # TODO Parsing and rebuilding the URL here is a much better idea.
            if service.find('?') == -1:
                return HttpResponseRedirect(service + '?ticket=' +
                                            ticket.ticket)
            else:
                return HttpResponseRedirect(service + '&ticket=' +
                                            ticket.ticket)
        else:
            return HttpResponseRedirect(success_redirect)

    # gateway=true indicates that we should silently try to authenticate (no
    # login screen).
    if request.GET.get('gateway', False):
        return HttpResponseRedirect(service)
    errors = []
    if request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)
        service = request.POST.get('service', None)
        lt = request.POST.get('lt', None)

        try:
            login_ticket = LoginTicket.objects.get(ticket=lt)
        except:
            errors.append('Login ticket expired. Please try again.')
        else:
            login_ticket.delete()
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    auth_login(request, user)
                    if service is not None:
                        ticket = utils.create_service_ticket(user, service)
                        return HttpResponseRedirect(service + '?ticket=' +
                                                    ticket.ticket)
                    else:
                        return HttpResponseRedirect(success_redirect)
                else:
                    errors.append('This account is disabled.')
            else:
                errors.append('Incorrect username and/or password.')
    form = LoginForm(service)
    return jingo.render(request, template_name, {
        'form': form,
        'errors': errors
    })