Beispiel #1
0
        # Create settings for user
        try:
            user_settings = Setting.objects.get(user=user)
        except:
            user_settings = None

        if not user_settings:
            s = Setting()
            s.user = user
            s.timezone = "US/Central"
            s.save()

        # Fake auth b/c github already verified them and we aren't using our
        # own #passwords...yet?
        user.auto_login = True
        user = authenticate(user=user)
        login(request, user)

    return redirect(reverse('post_list', args=[user.username]))


@login_required
def feedback(request, template_name='feedback.html'):
    """ Send Feed back """
    from django.core.mail import EmailMessage
    user = get_object_or_404(User, username=request.user.username)

    form = FeedBackForm(initial={'email': user.email})

    if request.method == 'POST':
Beispiel #2
0
        # Create settings for user
        try:
            user_settings = Setting.objects.get(user=user)
        except:
            user_settings = None

        if not user_settings:
            s = Setting()
            s.user = user
            s.timezone = "US/Central"
            s.save()

        # Fake auth b/c github already verified them and we aren't using our
        # own #passwords...yet?
        user.auto_login = True
        user = authenticate(user=user)
        login(request, user)

    return redirect(reverse("post_list", args=[user.username]))


@login_required
def feedback(request, template_name="feedback.html"):
    """ Send Feed back """
    from django.core.mail import mail_admins

    user = get_object_or_404(User, username=request.user.username)

    form = FeedBackForm(initial={"email": user.email})
Beispiel #3
0
def signin_callback(request, slug=None, template_name="base.html"):
    """Callback from Github OAuth"""

    user = None
    url = 'https://github.com/login/oauth/access_token'

    # Just request user setup locally if debug to prevent using the token
    # that was faked out
    user_url = 'https://api.github.com/users/%s' % (GITHUB_USER)

    if DEBUG:
        url = 'http://localhost:9000/access_token/'

    code = request.GET['code']
    resp = requests.post(url=url, data={
                        'client_id': GITHUB_CLIENT_ID,
                        'client_secret':
                        '2b40ac4251871e09441eb4147cbd5575be48bde9',
                        'code': code})

    _validate_github_response(resp)

    # FIXME: Awful parsing w/ lots of assumptions
    # String looks like this currently
    # access_token=1c21852a9f19b685d6f67f4409b5b4980a0c9d4f&token_type=bearer
    token = resp.content.split('&')[0].split('=')[1]

    if not DEBUG:
        # Use token to request logged in user when running normally
        user_url = 'https://api.github.com/user?access_token=%s' % (token)

    resp = requests.get(user_url)

    # FIXME: Handle error
    _validate_github_response(resp)
    github_user = simplejson.loads(resp.content)

    try:
        user = User.objects.get(username=github_user['login'])
    except:
        password = User.objects.make_random_password()
        user_defaults = {
            'username': github_user['login'],
            'is_active': True,
            'is_superuser': False,
            'password': password}

        user = User(**user_defaults)

    if user:
        user.save()
        try:
            profile = user.get_profile()
        except:
            profile = Profile(git_access_token=token, user=user,
                              meta=resp.content)

        profile.git_access_token = token
        profile.save()

        # Fake auth b/c github already verified them and we aren't using our
        # own #passwords...yet?
        user.auto_login = True
        user = authenticate(user=user)
        login(request, user)

    return redirect(reverse('post_list', args=[user.username]))