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