def client_new(): """Create new client.""" data, errors = ClientSchema().load(request.get_json()) if errors: return jsonify({"errors": errors}), 400 c = Client(user_id=current_user.get_id()) c.gen_salt() c.name = data.get("name") c.description = data.get("description") c.website = data.get("website") c._redirect_uris = '\n'.join(data.get("redirect_uris")) c.is_confidential = data.get("is_confidential") db.session.add(c) db.session.commit() return jsonify( { 'client_id': c.client_id, 'client_secret': c.client_secret, 'client_type': c.client_type, 'default_redirect_uri': c.default_redirect_uri, 'default_scopes': c.default_scopes, 'description': c.description, 'is_confidential': c.is_confidential, 'is_internal': c.is_internal, 'name': c.name, 'oauth2tokens': c.oauth2tokens, 'redirect_uris': c.redirect_uris, 'user_id': c.user_id, 'website': c.website, }), 200
def init_oauth_token(): ds = current_app.extensions["invenio-accounts"].datastore user = ds.user_model.query.filter_by(email="*****@*****.**").one() with db.session.begin_nested(): client = Client( name="admin", user_id=user.id, is_internal=True, is_confidential=False, _default_scopes="", ) client.gen_salt() token = Token( client_id=client.client_id, user_id=user.id, access_token=current_app.config["AUTHENTICATION_TOKEN"], expires=None, _scopes="", is_personal=True, is_internal=True, ) db.session.add(client) db.session.add(token) db.session.commit() click.secho("Authentication token generated successfully", fg="green")
def client_new(): """Create new client.""" data, errors = ClientSchema().load(request.get_json()) if errors: return jsonify({"errors": errors}), 400 c = Client(user_id=current_user.get_id()) c.gen_salt() c.name = data.get("name") c.description = data.get("description") c.website = data.get("website") c._redirect_uris = '\n'.join(data.get("redirect_uris")) c.is_confidential = data.get("is_confidential") db.session.add(c) db.session.commit() return jsonify({ 'client_id': c.client_id, 'client_secret': c.client_secret, 'client_type': c.client_type, 'default_redirect_uri': c.default_redirect_uri, 'default_scopes': c.default_scopes, 'description': c.description, 'is_confidential': c.is_confidential, 'is_internal': c.is_internal, 'name': c.name, 'oauth2tokens': c.oauth2tokens, 'redirect_uris': c.redirect_uris, 'user_id': c.user_id, 'website': c.website, }), 200
def test_client_salt(provider_fixture): app = provider_fixture with app.app_context(): with db.session.begin_nested(): client = Client(name="Test something", is_confidential=True, user_id=1) client.gen_salt() assert len(client.client_id) == app.config["OAUTH2SERVER_CLIENT_ID_SALT_LEN"] assert len(client.client_secret) == app.config["OAUTH2SERVER_CLIENT_SECRET_SALT_LEN"] db.session.add(client) with db.session.begin_nested(): db.session.delete(client)
def create_personal(name, user_id, scopes=None, is_internal=False, access_token=None): """Create a personal access token. A token that is bound to a specific user and which doesn't expire, i.e. similar to the concept of an API key. :param name: Client name. :param user_id: User ID. :param scopes: The list of permitted scopes. (Default: ``None``) :param is_internal: If ``True`` it's a internal access token. (Default: ``False``) :param access_token: personalized access_token. :returns: A new access token. """ with db.session.begin_nested(): scopes = " ".join(scopes) if scopes else "" client = Client(name=name, user_id=user_id, is_internal=True, is_confidential=False, _default_scopes=scopes) client.gen_salt() if not access_token: access_token = gen_salt( current_app.config.get('OAUTH2SERVER_TOKEN_PERSONAL_SALT_LEN')) token = Token( client_id=client.client_id, user_id=user_id, access_token=access_token, expires=None, _scopes=scopes, is_personal=True, is_internal=is_internal, ) db.session.add(client) db.session.add(token) return token
def test_client_salt(self): from invenio_oauth2server.models import Client c = Client( name='Test something', is_confidential=True, user_id=1, ) c.gen_salt() assert len(c.client_id) == \ self.app.config.get('OAUTH2_CLIENT_ID_SALT_LEN') assert len(c.client_secret) == \ self.app.config.get('OAUTH2_CLIENT_SECRET_SALT_LEN') db.session.add(c) db.session.commit() self.delete_objects([c])
def test_client_salt(provider_fixture): app = provider_fixture with app.app_context(): with db.session.begin_nested(): client = Client( name='Test something', is_confidential=True, user_id=1, ) client.gen_salt() assert len(client.client_id) == \ app.config['OAUTH2SERVER_CLIENT_ID_SALT_LEN'] assert len(client.client_secret) == \ app.config['OAUTH2SERVER_CLIENT_SECRET_SALT_LEN'] db.session.add(client) with db.session.begin_nested(): db.session.delete(client)
def create_user_token(client_name, user, access_token): """Create a token for the given user.""" # Create token for user with db.session.begin_nested(): client = Client(name=client_name, user_id=user.id, is_internal=True, is_confidential=False, _default_scopes='') client.gen_salt() token = Token(client_id=client.client_id, user_id=user.id, access_token=access_token, expires=None, is_personal=True, is_internal=True, _scopes='') db.session.add(client) db.session.add(token) return token
def init_authentication_token(): with db.session.begin_nested(): client = Client(name='admin', user_id=1, is_internal=True, is_confidential=False, _default_scopes="") client.gen_salt() token = Token( client_id=client.client_id, user_id=1, access_token=current_app.config["AUTHENTICATION_TOKEN"], expires=None, _scopes="", is_personal=True, is_internal=True, ) db.session.add(client) db.session.add(token) db.session.commit()
def init_authentication_token(): with db.session.begin_nested(): client = Client( name='admin', user_id=1, is_internal=True, is_confidential=False, _default_scopes="" ) client.gen_salt() token = Token( client_id=client.client_id, user_id=1, access_token=current_app.config["AUTHENTICATION_TOKEN"], expires=None, _scopes="", is_personal=True, is_internal=True, ) db.session.add(client) db.session.add(token) db.session.commit()