def index(request): if not request.user.is_authenticated(): create_and_login(None, None, request, is_guest = True) request.session.set_expiry(60*60*24*365*2) #sesja wygasnie za 2 lata, # bo plota glosi ze 10 letnie ciastka nie sa lubiane przez przegladarki :) username = PubUser.objects.get(user=request.user.id).nice_name() return render_to_response('pub4me/index.html', {"user_name": username}, context_instance=RequestContext(request))
def sign_up(request): if request.method == "POST": sign_up_form = UserCreationForm(request.POST) if sign_up_form.is_valid(): user = create_and_login(sign_up_form.data['username'], sign_up_form.data['password1'], request, False) return render_to_response('pub4me/index.html', {"user_name": user.username }, context_instance=RequestContext(request)) else: sign_up_form = UserCreationForm() return render_to_response('registration/login.html', {'sign_up_form':sign_up_form}, context_instance=RequestContext(request))
def facebook(request): if request.method == 'GET': this_url = "http://" + request.get_host() + request.path args = dict(client_id=settings.FACEBOOK_APP_ID, redirect_uri=this_url) if request.GET.__contains__('code'): args["code"] = request.GET.__getitem__('code') args["client_secret"] = settings.FACEBOOK_APP_SECRET ''' return HttpResponse(urllib.urlopen( "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(args)).read() + "<br/>\n code:"+args["code"] +"\n<br/>url:"+ "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(args) ) ''' #Strzal bezposrednio do FB. Pytamy o acces_token #Parametry: client_id, redirect_uri, code, client_secret fb_response = cgi.parse_qs(urllib.urlopen( "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(args)).read()) access_token = fb_response["access_token"][-1] #Kolejny bezposredni strzal. #Pobieramy z FB podstawowe dane usera profile = json.load(urllib.urlopen( "https://graph.facebook.com/me?" + urllib.urlencode(dict(access_token=access_token)))) fb_user_id = str(profile["id"]) fb_user_first_name = profile["first_name"] fb_user_last_name = profile["last_name"] #Jezeli ten FB ID juz jest skojarzony z jakims innym kontem to tylko przelogowujemy usera na tamto konto if PubUser.objects.filter(fb_id__exact=long(fb_user_id)).count() > 0: logout(request) existing_user = PubUser.objects.get(fb_id__exact = long(fb_user_id)).user user_name = existing_user.username existing_user = authenticate(username = user_name, password = settings.GUEST_USER_AUTO_PASSWORD) login(request, existing_user) return HttpResponseRedirect('/') #W tym momencie znamy goscia dane z fejsa - min fejsowe ID. this_user = request.user #Jezeli user jeszcze nie ma konta (chociazby automatycznie zakladanego) #i nie jest zalogowany, to zakladymy konto i logujemy go na szybkosci #Jezeli gosc mial konto na login i haslo, a chce je polaczyc z FB, to tez zakladamy nowe, a poprzednie olewamy #Za duzo pieprzenia z laczeniem dwoch typow kont if (not this_user.is_authenticated()) or ((this_user.is_authenticated() and PubUser.objects.get(user = this_user.id).registered)): this_user = create_and_login(None, None, request, is_guest = True) connect_with_facebook(this_user, fb_user_id, fb_user_first_name, fb_user_last_name) return HttpResponseRedirect('/') else: #Strzal do Fejsbuka (poprzez redirect). #User musi uprawnic nasza aplikacje wenatrz FB. #Fejsbuk zwroci redirect na nas i da nam parametr CODE potrzebny za chwile #Parametry: client_id, redirect_uri return HttpResponseRedirect( "https://graph.facebook.com/oauth/authorize?" + urllib.urlencode(args)); else: return HttpResponse("BLAD: Obslugiwana jest tylko metoda GET")