示例#1
0
    def get(self, request, *args, **kwargs):
        """
        (2.1) As a credential requestor, /login accepts three optional
        parameters:

        1. ``service``: the identifier of the application the client is
           accessing. We assume this identifier to be a URL.
        2. ``renew``: requires a client to present credentials
           regardless of any existing single sign-on session.
        3. ``gateway``: causes the client to not be prompted for
           credentials. If a single sign-on session exists the user
           will be logged in and forwarded to the specified service.
           Otherwise, the user remains logged out and is forwarded to
           the specified service.
        """

        service = request.GET.get('service')
        renew = to_bool(request.GET.get('renew'))
        gateway = to_bool(request.GET.get('gateway'))

        #if (service  and service.find("genomics")!= -1) :
        #    service=request.build_absolute_uri().split("service=")[1]
        if renew:
            logger.debug("Renew request received by credential requestor")

        elif gateway and service:
            logger.debug("Gateway request received by credential requestor")
            if is_authenticated(request.user):
                st = ServiceTicket.objects.create_ticket(service=service,
                                                         user=request.user)
                if self.warn_user():
                    return redirect('cas_warn',
                                    params={
                                        'service': service,
                                        'ticket': st.ticket
                                    })
                return redirect(service, params={'ticket': st.ticket})
            else:
                #ipdb.set_trace();
                return redirect(service)
        elif is_authenticated(request.user):
            if service:
                logger.debug(
                    "Service ticket request received by credential requestor")
                st = ServiceTicket.objects.create_ticket(service=service,
                                                         user=request.user)
                #ipdb.set_trace();
                if self.warn_user():
                    return redirect('cas_warn',
                                    params={
                                        'service': service,
                                        'ticket': st.ticket
                                    })
                return redirect(service, params={'ticket': st.ticket})
            else:
                msg = _("You are logged in as %s") % request.user
                messages.success(request, msg)
        return super(LoginView, self).get(request, *args, **kwargs)
示例#2
0
 def test_to_bool(self):
     """
     Any string value should evaluate as ``True``. Empty strings
     or strings of whitespace should evaluate as ``False``.
     """
     self.assertTrue(to_bool('true'))
     self.assertTrue(to_bool('1'))
     self.assertFalse(to_bool(None))
     self.assertFalse(to_bool(''))
     self.assertFalse(to_bool('   '))
示例#3
0
 def test_to_bool(self):
     """
     Any string value should evaluate as ``True``. Empty strings
     or strings of whitespace should evaluate as ``False``.
     """
     self.assertTrue(to_bool('true'))
     self.assertTrue(to_bool('1'))
     self.assertFalse(to_bool(None))
     self.assertFalse(to_bool(''))
     self.assertFalse(to_bool('   '))
示例#4
0
    def get(self, request, *args, **kwargs):
        """
        (2.1) As a credential requestor, /login accepts three optional
        parameters:

        1. ``service``: the identifier of the application the client is
           accessing. We assume this identifier to be a URL.
        2. ``renew``: requires a client to present credentials
           regardless of any existing single sign-on session.
        3. ``gateway``: causes the client to not be prompted for
           credentials. If a single sign-on session exists the user
           will be logged in and forwarded to the specified service.
           Otherwise, the user remains logged out and is forwarded to
           the specified service.
        """
        service = request.GET.get('service')
        renew = to_bool(request.GET.get('renew'))
        gateway = to_bool(request.GET.get('gateway'))

        if renew:
            logger.debug("Renew request received by credential requestor")
        elif gateway and service:
            logger.debug("Gateway request received by credential requestor")
            if request.user.is_authenticated():
                st = ServiceTicket.objects.create_ticket(service=service,
                                                         user=request.user)
                if self.warn_user():
                    return redirect('cas_warn', params={'service': service,
                                                        'ticket': st.ticket})
                return redirect(service, params={'ticket': st.ticket})
            else:
                params = request.GET.copy()
                params.pop('service', None)
                params.pop('renew', None)
                return redirect(service, params=params)
        elif request.user.is_authenticated():
            if service:
                logger.debug("Service ticket request received "
                             "by credential requestor")
                st = ServiceTicket.objects.create_ticket(service=service,
                                                         user=request.user)
                if self.warn_user():
                    return redirect('cas_warn', params={'service': service,
                                                        'ticket': st.ticket})
                return redirect(service, params={'ticket': st.ticket})
            else:
                msg = _("You are logged in as %s") % request.user
                messages.success(request, msg)
        return super(CustomLoginView, self).get(request, *args, **kwargs)
示例#5
0
文件: views.py 项目: wesny/unfold
 def post(self, request, *args, **kwargs):
     form = self.form_class(request.POST)
     if form.is_valid():
         external_id = form.cleaned_data['external_id']
         publisherusername = form.cleaned_data['publisher']
         price = form.cleaned_data['price']
         new_token = to_bool(request.GET.get('new_token', None))
         try:
             article = Article.objects.get(
                 publisher__username=publisherusername,
                 external_id=external_id)
         except ObjectDoesNotExist:
             return bad_request("Article referenced does not exist")
         if article.price != price:
             return bad_request("Price has changed since submission")
         purchase = Purchase(article=article,
                             price=price,
                             buyer=request.user)
         purchase.save()
         request.user.balance = request.user.balance - purchase.price
         request.user.save()
         publisher = User.objects.get(username=publisherusername)
         publisher.balance = publisher.balance + purchase.price
         publisher.save()
         if new_token != None:
             st = ServiceTicket.objects.create_ticket(
                 service=publisherusername + '.com', user=request.user)
             return cas_redirect(article.url, params={'token': st.ticket})
         else:
             return redirect(article.url)
     return render(request, self.template_name, {'form': form})
示例#6
0
    def get_context_data(self, **kwargs):
        service = self.request.GET.get('service')
        ticket = self.request.GET.get('ticket')
        pgturl = self.request.GET.get('pgtUrl')
        renew = to_bool(self.request.GET.get('renew'))

        try:
            if not ticket or ticket.startswith(ProxyTicket.TICKET_PREFIX):
                # If no ticket parameter is present, attempt to validate it
                # anyway so the appropriate error is raised
                pt, attributes, pgt, proxies = validate_proxy_ticket(
                    service, ticket, pgturl=pgturl)
                return {
                    'ticket': pt,
                    'pgt': pgt,
                    'attributes': attributes,
                    'proxies': proxies,
                    'error': None
                }
            else:
                st, attributes, pgt = validate_service_ticket(service,
                                                              ticket,
                                                              pgturl=pgturl,
                                                              renew=renew)
                return {
                    'ticket': st,
                    'pgt': pgt,
                    'attributes': attributes,
                    'proxies': None,
                    'error': None
                }
        except ValidationError as e:
            logger.warning("%s %s" % (e.code, e))
            return {'ticket': None, 'error': e}
示例#7
0
    def get_context_data(self, **kwargs):
        service = self.request.GET.get('service')
        ticket = self.request.GET.get('ticket')
        pgturl = self.request.GET.get('pgtUrl')
        renew = to_bool(self.request.GET.get('renew'))

        st, pgt, error = validate_service_ticket(service, ticket, pgturl, renew)
        attributes = get_attributes(st.user, st.service) if st else None
        return {'ticket': st, 'pgt': pgt, 'error': error, 'attributes': attributes}
示例#8
0
    def get(self, request, *args, **kwargs):
        self.request.session['service'] = self.request.GET.get('service')

        service = request.GET.get('service')
        renew = to_bool(request.GET.get('renew'))
        gateway = to_bool(request.GET.get('gateway'))

        if renew:
            logger.debug("Renew request received by credential requestor")
        elif gateway and service:
            logger.debug("Gateway request received by credential requestor")
            if request.user.is_authenticated():

                st = ServiceTicket.objects.create_ticket(service=service,
                                                         user=request.user)
                if self.warn_user():

                    return redirect('cas_warn',
                                    params={
                                        'service': service,
                                        'ticket': st.ticket
                                    })
                return redirect(service, params={'ticket': st.ticket})

            else:
                return redirect(service)
        elif request.user.is_authenticated():
            if service:
                logger.debug("Service ticket request received by "
                             "credential requestor")
                st = ServiceTicket.objects.create_ticket(service=service,
                                                         user=request.user)
                if self.warn_user():
                    return redirect('cas_warn',
                                    params={
                                        'service': service,
                                        'ticket': st.ticket
                                    })
                return redirect(service, params={'ticket': st.ticket})
            else:
                msg = _("You are logged in as %s") % request.user
                messages.success(request, msg)
                return redirect('home')
        return super(LoginView, self).get(request, *args, **kwargs)
示例#9
0
    def get_context_data(self, **kwargs):
        service = self.request.GET.get('service')
        ticket = self.request.GET.get('ticket')
        pgturl = self.request.GET.get('pgtUrl')
        renew = to_bool(self.request.GET.get('renew'))

        st, pgt, error = self.validate_service_ticket(service, ticket,
                                                      pgturl, renew)
        attributes = self.get_attributes(st.user, st.service) if st else None
        return {'ticket': st, 'pgt': pgt, 'error': error,
                'attributes': attributes}
示例#10
0
    def get(self, request, *args, **kwargs):
        service = request.GET.get('service')
        ticket = request.GET.get('ticket')
        renew = to_bool(request.GET.get('renew'))

        st, pgt, error = validate_service_ticket(service, ticket, None, renew)
        if st:
            content = "yes\n%s\n" % st.user.get_username()
        else:
            content = "no\n\n"
        return HttpResponse(content=content, content_type='text/plain')
示例#11
0
    def get(self, request, *args, **kwargs):
        service = request.GET.get('service')
        ticket = request.GET.get('ticket')
        renew = to_bool(request.GET.get('renew'))

        st, pgt, error = validate_service_ticket(service, ticket, None, renew)
        if st:
            content = "yes\n%s\n" % st.user.get_username()
        else:
            content = "no\n\n"
        return HttpResponse(content=content, content_type='text/plain')
示例#12
0
文件: views.py 项目: ermis-f/portal
    def get(self, request, *args, **kwargs):
        service = request.GET.get('service')
        ticket = request.GET.get('ticket')
        renew = to_bool(request.GET.get('renew'))

        try:
            st, attributes, pgt = validate_service_ticket(service, ticket, renew=renew)
            content = "yes\n%s\n" % st.user.get_username()
        except ValidationError:
            content = "no\n\n"
        return HttpResponse(content=content, content_type='text/plain')
示例#13
0
文件: views.py 项目: ermis-f/portal
    def get_context_data(self, **kwargs):
        service = self.request.GET.get('service')
        ticket = self.request.GET.get('ticket')
        pgturl = self.request.GET.get('pgtUrl')
        renew = to_bool(self.request.GET.get('renew'))

        try:
            st, attributes, pgt = validate_service_ticket(service, ticket, pgturl=pgturl, renew=renew)
            return {'ticket': st, 'pgt': pgt, 'attributes': attributes, 'error': None}
        except ValidationError as e:
            logger.warning("%s %s" % (e.code, e))
            return {'ticket': None, 'error': e}
示例#14
0
文件: views.py 项目: praekelt/mc2
    def get(self, request, *args, **kwargs):
        self.request.session['service'] = self.request.GET.get('service')

        service = request.GET.get('service')
        renew = to_bool(request.GET.get('renew'))
        gateway = to_bool(request.GET.get('gateway'))

        if renew:
            logger.debug("Renew request received by credential requestor")
        elif gateway and service:
            logger.debug("Gateway request received by credential requestor")
            if request.user.is_authenticated():

                st = ServiceTicket.objects.create_ticket(service=service,
                                                         user=request.user)
                if self.warn_user():

                    return redirect('cas_warn', params={'service': service,
                                                        'ticket': st.ticket})
                return redirect(service, params={'ticket': st.ticket})

            else:
                return redirect(service)
        elif request.user.is_authenticated():
            if service:
                logger.debug("Service ticket request received by "
                             "credential requestor")
                st = ServiceTicket.objects.create_ticket(service=service,
                                                         user=request.user)
                if self.warn_user():
                    return redirect('cas_warn', params={'service': service,
                                                        'ticket': st.ticket})
                return redirect(service, params={'ticket': st.ticket})
            else:
                msg = _("You are logged in as %s") % request.user
                messages.success(request, msg)
                return redirect('home')
        return super(LoginView, self).get(request, *args, **kwargs)
示例#15
0
    def get_context_data(self, **kwargs):
        service = self.request.GET.get('service')
        ticket = self.request.GET.get('ticket')
        pgturl = self.request.GET.get('pgtUrl')
        renew = to_bool(self.request.GET.get('renew'))

        if not ticket or ticket.startswith(ProxyTicket.TICKET_PREFIX):
            # If no ticket parameter is present, attempt to validate it
            # anyway so the appropriate error is raised
            t, pgt, proxies, error = validate_proxy_ticket(service, ticket, pgturl)
        else:
            t, pgt, error = validate_service_ticket(service, ticket, pgturl, renew)
            proxies = None
        attributes = get_attributes(t.user, t.service) if t else None
        return {'ticket': t, 'pgt': pgt, 'proxies': proxies,
                'error': error, 'attributes': attributes}
示例#16
0
    def get_context_data(self, **kwargs):
        service = self.request.GET.get('service')
        ticket = self.request.GET.get('ticket')
        pgturl = self.request.GET.get('pgtUrl')
        renew = to_bool(self.request.GET.get('renew'))

        if not ticket or ticket.startswith(ProxyTicket.TICKET_PREFIX):
            # If no ticket parameter is present, attempt to validate it
            # anyway so the appropriate error is raised
            t, pgt, proxies, error = self.validate_proxy_ticket(service,
                                                                ticket, pgturl)
        else:
            t, pgt, error = self.validate_service_ticket(service, ticket,
                                                         pgturl, renew)
            proxies = None
        attributes = self.get_attributes(t.user, t.service) if t else None
        return {'ticket': t, 'pgt': pgt, 'proxies': proxies,
                'error': error, 'attributes': attributes}
示例#17
0
文件: views.py 项目: wesny/unfold
 def get(self, request, *args, **kwargs):
     publisherusername = request.GET.get('publisher', None)
     external_id = request.GET.get('id', None)
     new_token = to_bool(request.GET.get('new_token', None))
     if publisherusername == None or external_id == None:
         return bad_request("Invalid Parameters")
     try:
         article = Article.objects.get(
             publisher__username=publisherusername, external_id=external_id)
     except ObjectDoesNotExist:
         return bad_request("Article referenced does not exist")
     purchase = Purchase.objects.filter(article=article, buyer=request.user)
     if purchase.exists():
         if new_token != None:
             publisher = User.objects.get(username=publisherusername)
             st = ServiceTicket.objects.create_ticket(
                 service=publisherusername + '.com', user=request.user)
             return cas_redirect(article.url, params={'token': st.ticket})
         else:
             return redirect(article.url)
     try:
         publisher = User.objects.get(username=publisherusername)
     except ObjectDoesNotExist:
         return bad_request("Publisher does not exist")
     next_url = ''
     if article.price > request.user.balance:
         next_url = urllib.parse.quote(request.get_full_path(),
                                       safe='~()*!.\'')
     form = self.form_class(
         initial={
             'external_id': external_id,
             'publisher': publisherusername,
             'price': article.price
         })
     data = {
         'form': form,
         'price': article.price,
         'publisher': publisher.name,
         'title': article.title,
         'balance': request.user.balance,
         'next': next_url or ''
     }
     return render(request, self.template_name, data)