コード例 #1
0
ファイル: views.py プロジェクト: nabacg/pub4me
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))
コード例 #2
0
ファイル: views.py プロジェクト: nabacg/pub4me
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))
コード例 #3
0
ファイル: views.py プロジェクト: nabacg/pub4me
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")