def create_user(request): """ Creates a user and authenticates them, if credentials are valid. """ if request.method == "GET": return render(request, 'index.html') elif request.method == "POST": data = json.loads(request.body) username, email, password = data["username"], data["email"], data["password"] response = BeatMyGoalUser.create(username, email, password) if response['errors']: return HttpResponse(json.dumps(response), content_type = "application/json") else: # user = response['user'] user = authenticate(username=username, password=password) login(request, user) redirect = "/users/%s/" % (user.id) return HttpResponse(json.dumps({"redirect" : redirect, "errors" : response["errors"] }), content_type = "application/json") else: return HttpResponse("Invalid request", status=500)
def user_login_fb(request): """ Handles the login of a user from Facebook. If there is no BMG account for the user, one is created. """ #response = HttpResponse() response = HttpResponseRedirect("/dashboard/") result = authomatic.login(DjangoAdapter(request, response), "fb") if result: if result.error: #TODO - right now this is redirecting anyway pass elif result.user: # Get the info from the user if not (result.user.name and result.user.id): result.user.update() username, email= result.user.name, result.user.email if (BeatMyGoalUser.objects.filter(username=username).exists()): user = BeatMyGoalUser.objects.get(username=username) user.backend='django.contrib.auth.backends.ModelBackend' login(request, user) else: password = BeatMyGoalUser.objects.make_random_password(8) user = BeatMyGoalUser.create(username, email, password)['user'] user = authenticate(username=username, password=password) login(request, user) response['Location'] = '/users/profile' return response