Exemplo n.º 1
0
def on_login_failed(sender, provider, oauth_response):
    connection_values = get_connection_values_from_oauth_response(
        provider, oauth_response)
    ds = app.security.datastore
    password = ''.join(random.choice(string.ascii_letters) for _ in range(20))
    user = ds.create_user(
        email='', password=password, name=connection_values['full_name'])
    ds.commit()

    connection_values['user_id'] = user.id
    connect_handler(connection_values, provider)
    login_user(user)
    db.commit()
    return render_template('index.html')
Exemplo n.º 2
0
def on_login_failed(sender, provider, oauth_response):
    connection_values = get_connection_values_from_oauth_response(
        provider, oauth_response)
    connection_values['display_name'] = connection_values['display_name']['givenName'] + " " + \
                                        connection_values['display_name']['familyName']
    connection_values['full_name'] = connection_values['display_name']
    session['google_id'] = connection_values['provider_user_id']
    role = user_datastore.find_or_create_role("User")
    user = user_datastore.create_user(google_id=session['google_id'])
    user_datastore.add_role_to_user(user, role)
    user_datastore.commit()
    connection_values['user_id'] = user.id
    connect_handler(connection_values, provider)
    login_user(user)
    db.session.commit()
    return render_template('index.html')
def on_login_failed(sender, provider, oauth_response):
    connection_values = get_connection_values_from_oauth_response(
        provider, oauth_response)
    name = connection_values['full_name']
    if isinstance(name, dict):
        try:
            name = '{} {}'.format(name['givenName'], name['familyName'])
        except (ValueError, KeyError):
            pass
    password = ''.join(random.choice(string.ascii_letters) for _ in range(20))
    user, new = User.get_or_create(
            name=name, defaults={'email': '', 'password': password})
    # don't bother using the datastore, just use the model

    connection_values['user_id'] = user.id
    connect_handler(connection_values, provider)
    login_user(user)
    db.commit()
    return render_template('index.html')
Exemplo n.º 4
0
def register(provider_id=None):
    if current_user.is_authenticated():
        return redirect(request.referrer or '/')
    

    form = RegisterForm()

    if provider_id:
        provider = get_provider_or_404(provider_id)
        connection_values = session.get('failed_login_connection', None)
    else:
        provider = None
        connection_values = None

    if form.validate_on_submit():
        ds = current_app.extensions['security'].datastore
        user = ds.create_user(email=form.email.data, password=form.password.data)
        ds.commit()

        # See if there was an attempted social login prior to registering
        # and if so use the provider connect_handler to save a connection
        connection_values = session.pop('failed_login_connection', None)

        if connection_values:
            connection_values['user_id'] = user.id
            connect_handler(connection_values, provider)

        if login_user(user):
            ds.commit()
            flash('Account created successfully', 'info')
            return redirect(url_for('website.index'))

        return render_template('thanks.html', user=user)

    login_failed = int(request.args.get('login_failed', 0))

    return render_template('register.html',
                           form=form,
                           provider=provider,
                           login_failed=login_failed,
                           connection_values=connection_values)
Exemplo n.º 5
0
def register(provider_id=None):
    if current_user.is_authenticated():
        return redirect(request.referrer or '/')

    form = RegisterForm()

    if provider_id:
        provider = get_provider_or_404(provider_id)
        connection_values = session.get('failed_login_connection', None)
    else:
        provider = None
        connection_values = None

    if form.validate_on_submit():
        ds = current_app.extensions['security'].datastore
        user = ds.create_user(email=form.email.data,
                              password=form.password.data)
        ds.commit()

        # See if there was an attempted social login prior to registering
        # and if so use the provider connect_handler to save a connection
        connection_values = session.pop('failed_login_connection', None)

        if connection_values:
            connection_values['user_id'] = user.id
            connect_handler(connection_values, provider)

        if login_user(user):
            ds.commit()
            flash('Account created successfully', 'info')
            return redirect(url_for('website.index'))

        return render_template('thanks.html', user=user)

    login_failed = int(request.args.get('login_failed', 0))

    return render_template('register.html',
                           form=form,
                           provider=provider,
                           login_failed=login_failed,
                           connection_values=connection_values)
Exemplo n.º 6
0
def registration():
    """
    Register user.

    :return:
    """
    provider_id = request.form.get('provider_id', None)
    data = request.form
    data = MultiDict()
    for k in request.form:
        data.add(k, request.form.get(k, None))
    print("provider_id : "+str(provider_id))
    if provider_id:
        data.pop('provider_id')
        provider = get_provider_or_404(provider_id)
        connection_values = session.get('failed_login_connection', None)
    else:
        provider = None
        connection_values = None
    if data:
        form = RegistrationForm(MultiDict(data))
    else:
        form = RegistrationForm()

    if users.is_authenticated():
        return jsonify(), 400

    if form.validate_on_submit():
        user = users.create_user(**data)
        # See if there was an attempted social login prior to registering
        # and if so use the provider connect_handler to save a connection
        connection_values = session.pop('failed_login_connection', None)
        if connection_values and provider_id:
            connection_values['user_id'] = user.id
            connect_handler(connection_values, provider)
        if user:
            login_user(user)
    status = users.is_authenticated()
    email = users.me().email if status else ""
    return jsonify(status=status, email=email)
Exemplo n.º 7
0
def registration():
    """
    Register user.

    :return:
    """
    provider_id = request.form.get('provider_id', None)
    data = request.form
    data = MultiDict()
    for k in request.form:
        data.add(k, request.form.get(k, None))
    print("provider_id : " + str(provider_id))
    if provider_id:
        data.pop('provider_id')
        provider = get_provider_or_404(provider_id)
        connection_values = session.get('failed_login_connection', None)
    else:
        provider = None
        connection_values = None
    if data:
        form = RegistrationForm(MultiDict(data))
    else:
        form = RegistrationForm()

    if users.is_authenticated():
        return jsonify(), 400

    if form.validate_on_submit():
        user = users.create_user(**data)
        # See if there was an attempted social login prior to registering
        # and if so use the provider connect_handler to save a connection
        connection_values = session.pop('failed_login_connection', None)
        if connection_values and provider_id:
            connection_values['user_id'] = user.id
            connect_handler(connection_values, provider)
        if user:
            login_user(user)
    status = users.is_authenticated()
    email = users.me().email if status else ""
    return jsonify(status=status, email=email)