示例#1
0
文件: auth.py 项目: krinndnz/floof
def openid_add(context, request):
    user = request.user
    form = AddOpenIDForm(request, request.POST)
    remove_form = RemoveOpenIDForm(request)
    remove_form.openids.query = model.session.query(model.IdentityURL).with_parent(user)

    ret = dict(
        add_openid_form=form,
        remove_openid_form=remove_form,
    )

    # Add an OpenID identity URL
    if not form.validate():
        return ret

    try:
        return HTTPSeeOther(location=openid_begin(
            identifier=form.new_openid.data,
            return_url=request.route_url('controls.openid.add_finish'),
            request=request,
            sreg=False,
        ))
    except OpenIDError as exc:
        form.new_openid.errors.append(exc.args[0])
        return ret
示例#2
0
文件: auth.py 项目: silky/floof
def openid_add(context, request):
    user = request.user
    form = AddOpenIDForm(request, request.POST)
    remove_form = RemoveOpenIDForm(request)
    remove_form.openids.query = model.session.query(
        model.IdentityURL).with_parent(user)

    ret = dict(
        add_openid_form=form,
        remove_openid_form=remove_form,
    )

    # Add an OpenID identity URL
    if not form.validate():
        return ret

    try:
        return HTTPSeeOther(location=openid_begin(
            identifier=form.new_openid.data,
            return_url=request.route_url('controls.openid.add_finish'),
            request=request,
            sreg=False,
        ))
    except OpenIDError as exc:
        form.new_openid.errors.append(exc.args[0])
        return ret
示例#3
0
文件: account.py 项目: krinndnz/floof
def login_begin(context, request):
    """Step one of logging in with OpenID; redirect to the provider."""
    form = LoginForm(request.POST)

    if not form.validate():
        return {'form': form}

    # Ensure the return key, if present and valid, will be passed
    # to openid_finish()
    return_url = request.route_url('account.login_finish')
    if form.return_key.data in get_stash_keys(request):
        return_url = update_params(return_url,
            return_key=form.return_key.data)

    if request.user:
        # Logged-in user trying to update their OpenID expiry time
        sreg = False
        settings = request.registry.settings
        max_auth_age = settings.get('auth.openid.expiry_seconds',
                                    DEFAULT_CONFIDENCE_EXPIRY)
    else:
        # Someone either logging in or registering
        # Problem is that we don't want sreg (as part of opeinid_begin) unless
        # the user is registering, but we don't know whether the user is
        # registering or just logging in until we resolve their identity URL...
        # which we do in openid_begin.
        # Possibly use checkid_immediate instead
        sreg = True
        max_auth_age = False

    try:
        return HTTPSeeOther(location=openid_begin(
                identifier=form.openid_identifier.data,
                return_url=return_url,
                request=request,
                max_auth_age=max_auth_age,
                sreg=sreg))

    except OpenIDError as exc:
        request.session.flash(exc.message,
            level='error', icon='key--exclamation')
        return {'form': form}
示例#4
0
文件: account.py 项目: silky/floof
def login_begin(context, request):
    """Step one of logging in with OpenID; redirect to the provider."""
    form = LoginForm(request.POST)

    if not form.validate():
        return {'form': form}

    # Ensure the return key, if present and valid, will be passed
    # to openid_finish()
    return_url = request.route_url('account.login_finish')
    if form.return_key.data in get_stash_keys(request):
        return_url = update_params(return_url,
            return_key=form.return_key.data)

    if request.user:
        # Logged-in user trying to update their OpenID expiry time
        sreg = False
        settings = request.registry.settings
        max_auth_age = settings.get('auth.openid.expiry_seconds',
                                    DEFAULT_CONFIDENCE_EXPIRY)
    else:
        # Someone either logging in or registering
        # Problem is that we don't want sreg (as part of opeinid_begin) unless
        # the user is registering, but we don't know whether the user is
        # registering or just logging in until we resolve their identity URL...
        # which we do in openid_begin.
        # Possibly use checkid_immediate instead
        sreg = True
        max_auth_age = False

    try:
        return HTTPSeeOther(location=openid_begin(
                identifier=form.openid_identifier.data,
                return_url=return_url,
                request=request,
                max_auth_age=max_auth_age,
                sreg=sreg))

    except OpenIDError as exc:
        request.session.flash(exc.message,
            level='error', icon='key--exclamation')
        return {'form': form}