Ejemplo n.º 1
0
def link_bibliocommons(request):
    """
        Links a bibliocommons account to an existing user account, given valid credentials
    """
    if request.method == "POST":
        data = None
        try:
            data = json.loads(request.raw_post_data)
        except ValueError:
            return HttpResponse(status='400')

        if request.user.is_authenticated():
            if ('username' in data and 'password' in data):
                if validUser(data['username'], data['password']):
                    if BibliocommonsLink.objects.filter(user=request.user).count() > 0:
                        return HttpResponse(json.dumps({'result': 'Error', 'message':'Centennial account already linked'}), content_type='application/json')
                    if BibliocommonsLink.objects.filter(biblioname=data['username']).count() > 0:
                        return HttpResponse(json.dumps({'result': 'Error', 'message':'Bibliocommons account already linked'}), content_type='application/json')
                    link = BibliocommonsLink.objects.create(biblioname=data['username'], user=request.user)
                    link.save()
                    return HttpResponse(json.dumps({'result':'success'}), content_type='application/json')
                else:
                    return HttpResponse(json.dumps({'result':'Error', 'message':'Invalid Username or Password'}), content_type='application/json')
            else:
                return HttpResponse(status='400')
        else:
            return HttpResponse(status='403')
    return HttpResponse(status='501')
 def authenticate(self, username=None, password=None):
     if validUser(username, password):
         try:
             biblio_user = BibliocommonsLink.objects.get(biblioname=username)
             return biblio_user.user
         except BibliocommonsLink.DoesNotExist:
             pass
         # If we got here, these are valid credentials, but no account exists
         centennialName = username
         count = 0
         while (User.objects.filter(username=centennialName).count() > 0):
             count += 1
             centennialName = username + str(count)
         user = User.objects.create_user(username=centennialName, email="",password="******")
         grp = Group.objects.get(name='Basic User') 
         grp.user_set.add(user)
         user.is_active = True
         user.save()
         biblio_link = BibliocommonsLink.objects.create(biblioname=username, user=user)
         biblio_link.save()
         return user
     return None