Ejemplo n.º 1
0
def profile(request, user_id):
    try:
        user = User.load(request.session, id=user_id)
    except NoResultFound:
        return {}, 'notfound.phtml', 404

    return {'show_user': user}, 'profile.phtml'
Ejemplo n.º 2
0
    def logged_user(self):
        try:
            service, service_id = self.client_session['login']
            return User.load(self.session,
                             service=service, service_id=service_id)

        except (KeyError, NoResultFound, ValueError):
            return None
Ejemplo n.º 3
0
def g_callback(request):
    # parse the original url from the google+ redirect state param
    original_url = request.args.get("state", "")
    code = request.args["code"]

    # authenticate the passed code
    q = requests.post(
        "https://accounts.google.com/o/oauth2/token",
        data={
            "code": code,
            "client_id": G["client_id"],
            "client_secret": G["client_secret"],
            "redirect_uri": request.host_url + "login/callback/g",
            "grant_type": "authorization_code",
        },
    )

    if q.status_code != 200:
        stderr.write("Login error G+:\n    %s\n" % q.content)
        return redirect("/?msg=AUTH_ERROR")

    content = loads(q.content)
    access_token = content["access_token"]
    del content

    # get userinfo
    q = requests.get("https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + access_token)
    content = loads(q.content)

    service_id = content["id"]

    # save userinfo by id
    u = User.save_g_data(request.session, service_id, fullname=content["name"], email=content["email"])
    u.img_url = content.get("picture")

    request.client_session["login"] = ["gmail", service_id]

    return redirect("/" + original_url)
Ejemplo n.º 4
0
    q = requests.get("https://graph.facebook.com/me?access_token=" + access_token)

    if q.status_code != 200:
        return redirect("/?msg=2")

    userdata = loads(q.content)

    profile_id = userdata["id"]
    email = userdata.get("email")
    fullname = userdata["name"]

    img_url = None
    try:
        q = requests.get("https://graph.facebook.com/%s/picture?redirect=0" % profile_id)
        if q.status_code == 200:
            userdata = loads(q.content)["data"]
            img_url = userdata["url"]

    except Exception, exc:
        stderr.write("fb profile pic fetch error: " + str(exc))

    # save userinfo by id
    u = User.save_fb_data(request.session, profile_id, fullname, email)
    u.img_url = img_url
    request.session.flush()

    # set redirect with cookie
    request.client_session["login"] = ["fb", profile_id]

    return redirect("/" + original_url)