Esempio n. 1
0
File: views.py Progetto: phadej/kamu
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
Esempio n. 2
0
File: views.py Progetto: phadej/kamu
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)
Esempio n. 3
0
File: views.py Progetto: phadej/kamu
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))
Esempio n. 4
0
File: views.py Progetto: phadej/kamu
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)