コード例 #1
0
ファイル: app.py プロジェクト: tiborsimko/invenio-circulation
def user():
    """Create circulation admin user."""
    from werkzeug.local import LocalProxy
    from flask_security.utils import encrypt_password

    from invenio_db import db
    from invenio_oauth2server.models import Token

    _datastore = LocalProxy(lambda: app.extensions['security'].datastore)
    kwargs = dict(
        email='*****@*****.**',
        password='******',
        active=True
    )
    kwargs['password'] = encrypt_password(kwargs['password'])
    user = _datastore.create_user(**kwargs)

    Token.create_personal(
        'test-personal-{0}'.format(user.id),
        user.id,
        scopes=['webhooks:event'],
        is_internal=True,
    ).access_token

    db.session.commit()
コード例 #2
0
def test_save_patron(get_uuid_pid_by_email, reindex, record_indexer, url_for1,
                     url_for2, send_email, confirm_user, app, db,
                     minimal_patron_only_record):
    """Test save patron"""

    # Convenient references
    security = LocalProxy(lambda: app.extensions['security'])
    datastore = LocalProxy(lambda: security.datastore)
    datastore.create_role(name='patrons')

    # hack the return value
    get_uuid_pid_by_email.return_value = None, None

    email = '*****@*****.**'
    u1 = datastore.create_user(email=email,
                               active=False,
                               password=hash_password('aafaf4as5fa'))
    datastore.commit()
    u2 = datastore.find_user(email=email)
    assert u1 == u2
    assert 1 == User.query.filter_by(email=email).count()
    email = minimal_patron_only_record.get('email')
    assert datastore.get_user(email) is None

    save_patron(minimal_patron_only_record, Patron.provider.pid_type,
                Patron.fetcher, Patron.minter, record_indexer, Patron, None)
    email = minimal_patron_only_record.get('email')

    # Verify that user exists in app's datastore
    user_ds = datastore.get_user(email)
    assert user_ds
    assert user_ds.email == email
コード例 #3
0
def access_token(app, db):
    _datastore = LocalProxy(lambda: app.extensions['security'].datastore)
    kwargs = dict(email='*****@*****.**', password='******',
                  active=True)
    kwargs['password'] = encrypt_password(kwargs['password'])
    user = _datastore.create_user(**kwargs)

    db.session.commit()
    token = Token.create_personal(
        'test-personal-{0}'.format(user.id),
        user.id,
        scopes=['webhooks:event'],
        is_internal=True,
    ).access_token
    db.session.commit()

    yield token
コード例 #4
0
def access_token(app, db):
    _datastore = LocalProxy(lambda: app.extensions['security'].datastore)
    kwargs = dict(email='*****@*****.**',
                  password='******',
                  active=True)
    kwargs['password'] = encrypt_password(kwargs['password'])
    user = _datastore.create_user(**kwargs)

    db.session.commit()
    token = Token.create_personal(
        'test-personal-{0}'.format(user.id),
        user.id,
        scopes=['webhooks:event'],
        is_internal=True,
    ).access_token
    db.session.commit()

    yield token
コード例 #5
0
def app(request):
    """Flask application fixture."""
    # Set temporary instance path for sqlite
    instance_path = tempfile.mkdtemp()
    app = Flask('testapp', instance_path=instance_path)

    app.config.update(SQLALCHEMY_DATABASE_URI=os.environ.get(
        'SQLALCHEMY_DATABASE_URI', 'sqlite:///test.db'),
                      TESTING=True,
                      SECRET_KEY='SECRET_KEY',
                      SQLALCHEMY_TRACK_MODIFICATIONS=False,
                      JSONSCHEMAS_ENDPOINT='/schema',
                      JSONSCHEMAS_HOST='ils.test.rero.ch',
                      RECORDS_UI_ENDPOINTS={
                          "doc": {
                              "pid_type":
                              "doc",
                              "route":
                              "/documents/<pid_value>",
                              "template":
                              "reroils_data/detailed_view_documents_items.html"
                          }
                      })

    InvenioDB(app)
    InvenioPIDStore(app)
    InvenioRecords(app)
    InvenioAccounts(app)
    REROILSDATA(app)
    InvenioAccess(app)
    InvenioJSONSchemas(app)
    InvenioRecordsUI(app)
    Menu(app)
    Babel(app)
    app.register_blueprint(item_blueprint)

    @app.route('/test/login')
    def login():
        from flask_security import login_user
        from flask import request as flask_request

        role = flask_request.args.get('role')
        if role:
            datastore.create_role(name=role)
            datastore.add_role_to_user(user, role)
        datastore.commit()
        login_user(user)
        return "Logged In"

    @app.route('/test/login')
    def logout():
        from flask_security import logout_user
        logout_user()
        return "Logged Out"

    from invenio_db import db as db_
    with app.app_context():
        if not database_exists(str(db_.engine.url)):
            create_database(str(db_.engine.url))
        db_.create_all()
        security = LocalProxy(lambda: app.extensions['security'])
        datastore = LocalProxy(lambda: security.datastore)
        user = datastore.create_user(email='*****@*****.**',
                                     active=True,
                                     password=hash_password('aafaf4as5fa'))
        yield app

        # Teardown instance path.
        db_.session.remove()
        db_.drop_all()
        shutil.rmtree(instance_path)
コード例 #6
0
ファイル: views.py プロジェクト: gothm/flask-security
    form = RegisterForm(csrf_enabled=not app.testing)

<<<<<<< HEAD
    if form.validate_on_submit():
        u = None
        try:
            u  = _datastore.find_user(email=form.data.get('email'))
            if u is not None:
                _logger.debug('User %s exists' % u)
                form.email.errors.append('A user with that email already exists')
                return render_template('security/registrations/new.html',
                           register_user_form=form)
        except:
            # Create user
            u = _datastore.create_user(**form.to_dict())
=======
    if not form.validate_on_submit():
        return render_template('security/register.html',
                               register_user_form=form,
                               **_ctx('register'))
>>>>>>> 8919129c95bb1e27e30a925240811cf63e13ece9

    token = None
    user = _datastore.create_user(**form.to_dict())
    _commit()

    if _security.confirmable:
        token = send_confirmation_instructions(user)
        do_flash(*get_message('CONFIRM_REGISTRATION', email=user.email))