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)
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(' '))
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)
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})
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}
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}
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)
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}
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')
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')
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}
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)
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}
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}
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)