def logout(request): args = {} if get_user_from_cookie(request.COOKIES): args['fb_logout'] = True auth_logout(request) resp = render_to_response("registration/logout.html", args, context_instance=RequestContext(request)) return resp
def login(request): user = get_user_from_cookie(request.COOKIES) if user and not request.user.is_authenticated(): url = reverse('facebook_connect') next = request.REQUEST.get('next') if next: url += '?next=%s' % next return HttpResponseRedirect(url) return auth_login(request)
def register_form(request): fb_user = get_user_from_cookie(request.COOKIES) if not fb_user: raise Http403() if request.method == 'POST': if not 'fb_reg_data' in request.session: raise Http400() fb_data = request.session['fb_reg_data'] form = RegistrationForm(request.POST) if form.is_valid(): create_fb_user(form.cleaned_data['username'], fb_data) user = authenticate(facebook_id=fb_data['uid']) login(request, user) url = reverse('registration_activation_complete') return HttpResponseRedirect(url) else: fb_data = fetch_user_data(request, fb_user['uid'], fb_user['access_token']) if not fb_data: url = reverse('login') resp = redirect_with_next(request, url) delete_cookie(resp) return resp fb_data['uid'] = fb_user['uid'] fb_data['access_token'] = fb_user['access_token'] request.session['fb_reg_data'] = fb_data user_data = fb_data['info'] # Try to find a default account name account = user_data['link'].split('/')[-1] if account.startswith('profile.php'): # No account shortname defined, use first and last names. account = slugify("%s %s" % (user_data['first_name'], user_data['last_name'])) account = account.replace('-', '_')[0:30] # Filter all non-word characters from account name account = re.sub('\W', '', account)[0:30] try: User.objects.get(username=account) account = None except User.DoesNotExist: pass form = RegistrationForm(initial={'username': account}) args = {} args['fb_portrait'] = fb_data['portrait'] args['fb_data'] = fb_data['info'] args['form'] = form return render_to_response("facebook/register_form.html", args, context_instance=RequestContext(request))
def connect(request): fb_user = get_user_from_cookie(request.COOKIES) if not fb_user: url = reverse('login') return redirect_with_next(request, url) profile = get_profile_by_fb_id(fb_user['uid']) if profile: user = profile.user if not user.is_active: return redirect_with_next(request, url) #FIXME user = authenticate(facebook_id=fb_user['uid']) # user should never be None login(request, user) return HttpResponseRedirect(request.REQUEST.get('next', '/')) # args = {} # return render_to_response('facebook/connect.html', args, # context_instance=RequestContext(request)) url = reverse('facebook_register_form') return redirect_with_next(request, url)