Пример #1
0
  def post(self, request, *args, **kwargs):
    action = self.request.POST.get('action', None)
    name = self.request.POST.get('name', None)
    value = self.request.POST.get('value', None)
    user = self.request.user

    if action == 'delete':
      if name is None:
        return HttpResponse('Invalid request', status=400)
      r = list(paged_query('get', 'userattribute', params={'user': user.username, 'attribute': name}))
      if len(r) > 1:
        LOG.error('User has duplicate attributes', extra={'data': {'user': user.username, 'attribute': name}})
        return HttpResponse('Multiple attributes error', status=500)
      elif len(r) == 0:
        return HttpResponse(status=404)
      attribute_id = r[0]['id']
      roledb_client('delete', 'userattribute/{id}'.format(id=attribute_id))
      return HttpResponse('OK')
    if action == 'add':
      # get attribute
      # if not existing, create new attribute
      # add attribute with value
      # TODO: auth-data sets UserAttributes always for request.user
      pass
    else:
      return HttpResponse('Invalid action', status=400)
Пример #2
0
 def get_context_data(self, **kwargs):
     context = super(ProfileView, self).get_context_data(**kwargs)
     try:
         user_data = roledb_client("get", "query/{username}".format(username=self.request.user.username))
         context["attributes"] = user_data.get("attributes", None)
     except APIResponse:
         context["attributes"] = []
     return context
 def associate(self, user, attr_name, attr_value):
   if not self.user == user:
     LOG.warning('AuthAssociationToken.associate() called by user not owning the token', extra={'data': {'request.user': user, 'self.user': self.user}})
     return False
   data = {
     'user': self.user.username,
     'attribute': attr_name,
     'value': attr_value,
   }
   try:
     r = roledb_client('post', 'userattribute', data=data)
   except APIResponse as e:
     LOG.error('AuthAssocionToken.associate() failed', extra={'data': {'authdatapayload': data, 'authdataresponse_code': e.r.status_code, 'authdataresponse_text': e.r.text}})
     return False
   self.is_used = True
   self.save()
   return True
 def register(self, user, eppn=None, auth_method=None):
   if self.user != user:
     return False
   print 'REGISTRATION', self.pk, repr(self.user.username)
   # TODO Push the data to RoleDB
   data = {
     'user': self.user.username,
     'attribute': auth_method,
     'value': eppn,
     # 'invitator': self.issuer_oid,
     # 'invitator_auth_method': self.issuer_auth_method,
     # 'invited_at': self.issued_at,
   }
   r = roledb_client('post', 'userattribute', data=data)
   self.is_used = True
   self.save()
   return True