Example #1
0
def complete_process(request, backend):
    """Authentication complete process"""
    backend = get_backend(backend, request, request.path)
    if not backend:
        return HttpResponseServerError(_('Incorrect authentication service'))

    try:
        user = backend.auth_complete()
    except ValueError as e:  # some Authentication error ocurred
        user = None
        error_key = getattr(settings, 'SOCIAL_AUTH_ERROR_KEY', None)
        if error_key:  # store error in session
            request.session[error_key] = str(e)

    if user and getattr(user, 'is_active', True):
        login(request, user)
        if getattr(settings, 'SOCIAL_AUTH_SESSION_EXPIRATION', True):
            # Set session expiration date if present and not disabled by
            # setting
            backend_name = backend.AUTH_BACKEND.name
            social_user = user.social_auth.get(provider=backend_name)
            if social_user.expiration_delta():
                request.session.set_expiry(social_user.expiration_delta())
        url = request.session.pop(REDIRECT_FIELD_NAME, '') or DEFAULT_REDIRECT
    else:
        url = getattr(settings, 'LOGIN_ERROR_URL', settings.LOGIN_URL)
    return HttpResponseRedirect(url)
Example #2
0
def complete_process(request, backend):
    """Authentication complete process"""
    backend = get_backend(backend, request, request.path)
    if not backend:
        return HttpResponseServerError(_('Incorrect authentication service'))

    try:
        user = backend.auth_complete(request)
    except ValueError as e:  # some Authentication error ocurred
        user = None
        error_key = getattr(settings, 'SOCIAL_AUTH_ERROR_KEY', None)
        if error_key:  # store error in session
            request.session[error_key] = str(e)

    if user and getattr(user, 'is_active', True):
        login(request, user)
        if getattr(settings, 'SOCIAL_AUTH_SESSION_EXPIRATION', True):
            # Set session expiration date if present and not disabled by
            # setting
            backend_name = backend.AUTH_BACKEND.name
            social_user = user.social_auth.get(provider=backend_name)
            if social_user.expiration_delta():
                request.session.set_expiry(social_user.expiration_delta())
        url = request.session.pop(REDIRECT_FIELD_NAME, '') or DEFAULT_REDIRECT
    else:
        url = getattr(settings, 'LOGIN_ERROR_URL', settings.LOGIN_URL)
    return HttpResponseRedirect(url)
Example #3
0
def disconnect(request, backend):
    """Disconnects given backend from current logged in user."""
    backend = get_backend(backend, request, request.path)
    if not backend:
        return HttpResponseServerError('Incorrect authentication service')
    backend.disconnect(request.user)
    url = request.REQUEST.get(REDIRECT_FIELD_NAME, '') or DEFAULT_REDIRECT
    return HttpResponseRedirect(url)
Example #4
0
def associate_complete(request, backend):
    """Authentication complete process"""
    backend = get_backend(backend, request, request.path)
    if not backend:
        return HttpResponseServerError(_('Incorrect authentication service'))
    backend.auth_complete(user=request.user)
    url = request.session.pop(REDIRECT_FIELD_NAME, '') or DEFAULT_REDIRECT
    return HttpResponseRedirect(url)
Example #5
0
def disconnect(request, backend):
    """Disconnects given backend from current logged in user."""
    backend = get_backend(backend, request, request.path)
    if not backend:
        return HttpResponseServerError('Incorrect authentication service')
    backend.disconnect(request.user)
    url = request.REQUEST.get(REDIRECT_FIELD_NAME, '') or DEFAULT_REDIRECT
    return HttpResponseRedirect(url)
Example #6
0
def associate_complete(request, backend):
    """Authentication complete process"""
    backend = get_backend(backend, request, request.path)
    if not backend:
        return HttpResponseServerError(_('Incorrect authentication service'))
    backend.auth_complete(user=request.user)
    url = request.session.pop(REDIRECT_FIELD_NAME, '') or DEFAULT_REDIRECT
    return HttpResponseRedirect(url)
Example #7
0
def complete_process(request, backend):
    """Authentication complete process"""
    backend_name = backend
    backend = get_backend(backend, request, request.path)
    if not backend:
        return HttpResponseServerError(_('Incorrect authentication service'))

    try:
        user = backend.auth_complete()
        logger.info('complete_process.user=%s' % user)
        if not isinstance(user, User):

            # wechat login bind in profile page, use wechat redirct's state param deliver username
            username = request.GET.get('state')
            if username:
                logger.info('complete_process.username=%s' % username)
                users = User.objects.filter(username=username)
                if users and len(users) > 0:
                    usa = UserSocialAuth.objects.create(provider=backend_name, uid=user, extra_data='', user_id=users[0].id)
                    usa.save()
                    return HttpResponseRedirect(reverse('profile.index'))

            return HttpResponseRedirect(reverse('accounts.bind_email') + '?openid=%s&provider=%s' % (user, backend_name))
    except ValueError as e:  # some Authentication error ocurred
        user = None
        error_key = getattr(settings, 'SOCIAL_AUTH_ERROR_KEY', None)
        if error_key:  # store error in session
            request.session[error_key] = str(e)

    if user and getattr(user, 'is_active', True):
        login(request, user)
        if getattr(settings, 'SOCIAL_AUTH_SESSION_EXPIRATION', True):
            # Set session expiration date if present and not disabled by
            # setting
            backend_name = backend.AUTH_BACKEND.name
            social_users = user.social_auth.filter(user_id=user.id)
            if social_users and len(social_users) > 0:
                social_user = social_users[0]
                if social_user.expiration_delta():
                    request.session.set_expiry(social_user.expiration_delta())

        url = request.session.pop(REDIRECT_FIELD_NAME, '') or DEFAULT_REDIRECT

        if hasattr(request.user, 'profile'):
            association = request.user.profile.current_association
            if association is None or association.id == 0:
                url = reverse('associations.join')
            else:
                if association.custom_domain:
                    url = 'https://%s' % association.custom_domain
                elif association.subdomain:
                    url = 'https://%s.ams365.cn' % association.subdomain

    else:
        url = getattr(settings, 'LOGIN_ERROR_URL', settings.LOGIN_URL)

    return HttpResponseRedirect(url)
Example #8
0
def complete_process(request, backend):
    """Authentication complete process"""
    backend = get_backend(backend, request, request.path)
    if not backend:
        return HttpResponseServerError(_('Incorrect authentication service'))

    try:
        user = backend.auth_complete()
    except ValueError, e:  # some Authentication error ocurred
        user = None
        error_key = getattr(settings, 'SOCIAL_AUTH_ERROR_KEY', None)
        if error_key:  # store error in session
            request.session[error_key] = str(e)
Example #9
0
def complete_process(request, backend):
    """Authentication complete process"""
    backend = get_backend(backend, request, request.path)
    if not backend:
        return HttpResponseServerError(_('Incorrect authentication service'))

    try:
        user = backend.auth_complete()
    except ValueError, e:  # some Authentication error ocurred
        user = None
        error_key = getattr(settings, 'SOCIAL_AUTH_ERROR_KEY', None)
        if error_key:  # store error in session
            request.session[error_key] = str(e)
Example #10
0
def auth_process(request, backend, complete_url_name):
    """Authenticate using social backend"""
    redirect = reverse(complete_url_name, args=(backend, ))
    backend = get_backend(backend, request, redirect)
    if not backend:
        return HttpResponseServerError(_('Incorrect authentication service'))
    # Check and sanitize a user-defined GET/POST redirect_to field value.
    redirect = sanitize_redirect(request.get_host(),
                                 request.REQUEST.get(REDIRECT_FIELD_NAME))
    request.session[REDIRECT_FIELD_NAME] = redirect or DEFAULT_REDIRECT
    if backend.uses_redirect:
        return HttpResponseRedirect(backend.auth_url())
    else:
        return HttpResponse(backend.auth_html(),
                            content_type='text/html;charset=UTF-8')
Example #11
0
def auth_process(request, backend, complete_url_name):
    """Authenticate using social backend"""
    redirect = reverse(complete_url_name, args=(backend,))
    backend = get_backend(backend, request, redirect)
    if not backend:
        return HttpResponseServerError(_('Incorrect authentication service'))
    # Check and sanitize a user-defined GET/POST redirect_to field value.
    redirect = sanitize_redirect(request.get_host(),
                                 request.REQUEST.get(REDIRECT_FIELD_NAME))
    request.session[REDIRECT_FIELD_NAME] = redirect or DEFAULT_REDIRECT
    if backend.uses_redirect:
        return HttpResponseRedirect(backend.auth_url())
    else:
        return HttpResponse(backend.auth_html(),
                            content_type='text/html;charset=UTF-8')