def create(cls, user, name, desc, website, redirect_uri): """Creates new OAuth client and generates a secret key for it. Args: user: User who manages the client. name: Name of the client. desc: Client description. website: Client web site. redirect_uri: URI where responses will be sent. Returns: New OAuth client. """ client_id = generate_string(20) client_secret = generate_string(40) client = cls(client_id=client_id, client_secret=client_secret, user_id=user.id, name=name, desc=desc, website=website, redirect_uri=redirect_uri) db.session.add(client) db.session.commit() return client
def generate(cls, user, name, desc, website, redirect_uri, scopes): client_id = generate_string(20) client_secret = generate_string(40) client = cls(client_id=client_id, client_secret=client_secret, user=user, name=name, desc=desc, website=website, redirect_uri=redirect_uri, scopes=' '.join(scopes)) db.session.add(client) db.session.commit() return client
def test_generate_string(self): length = 42 str_1 = utils.generate_string(length) str_2 = utils.generate_string(length) self.assertEqual(len(str_1), length) self.assertEqual(len(str_2), length) self.assertNotEqual(str_1, str_2) # Generated strings shouldn't be the same
def generate_token(self, client_id, refresh_token, user_id, scope=None): if not refresh_token: refresh_token = generate_string(self.token_length) access_token = generate_string(self.token_length) expires = datetime.now() + timedelta(seconds=self.token_expire) self.persist_token(client_id, scope, refresh_token, access_token, expires, user_id) return access_token, 'Bearer', self.token_expire, refresh_token
def generate_token(self, client_id, refresh_token, user_id, scope=None): if not refresh_token: refresh_token = generate_string(self.token_length) access_token = generate_string(self.token_length) expires = datetime.now() + timedelta(seconds=self.token_expire) token = self.persist_token(client_id, scope, refresh_token, access_token, expires, user_id) return access_token, 'Bearer', self.token_expire, refresh_token
def get_authentication_uri(self, **kwargs): csrf = generate_string(20) self.persist_data(csrf=csrf) params = dict(response_type='code', redirect_uri=url_for('login.musicbrainz_post', _external=True), scope='profile', state=csrf) return self._service.get_authorize_url(**params)
def create(cls, user, name, desc, website, redirect_uri): """Creates new OAuth client and generates a secret key for it. Args: user: User who manages the client. name: Name of the client. desc: Client description. website: Client web site. redirect_uri: URI where responses will be sent. Returns: New OAuth client. """ client_id = generate_string(20) client_secret = generate_string(40) client = cls(client_id=client_id, client_secret=client_secret, user=user, name=name, desc=desc, website=website, redirect_uri=redirect_uri) db.session.add(client) db.session.commit() return client
def create(*, user_id, name, desc, website, redirect_uri): """Creates new OAuth client and generates secret key for it. Args: user_id (uuid): ID of the user who manages the client. name (str): Name of the client. desc (str): Client description. website (str): Client web site. redirect_uri: URI where responses will be sent. Returns: Dictionary of the following structure { "client_id": str, "client_secret": str, "user_id": uuid, "name": str, "desc": desc, "website": website, "redirect_uri": redirect_uri, } """ with db.engine.connect() as connection: connection.execute( sqlalchemy.text(""" INSERT INTO oauth_client (client_id, client_secret, redirect_uri, user_id, name, "desc", website) VALUES (:client_id, :client_secret, :redirect_uri, :user_id, :name, :desc, :website) """), { "client_id": generate_string(CLIENT_ID_LENGTH), "client_secret": generate_string(CLIENT_SECRET_LENGTH), "redirect_uri": redirect_uri, "user_id": user_id, "name": name, "website": website, "desc": desc, })
def create(*, user_id, name, desc, website, redirect_uri): """Creates new OAuth client and generates secret key for it. Args: user_id (uuid): ID of the user who manages the client. name (str): Name of the client. desc (str): Client description. website (str): Client web site. redirect_uri: URI where responses will be sent. Returns: Dictionary of the following structure { "client_id": str, "client_secret": str, "user_id": uuid, "name": str, "desc": desc, "website": website, "redirect_uri": redirect_uri, } """ with db.engine.connect() as connection: connection.execute(sqlalchemy.text(""" INSERT INTO oauth_client (client_id, client_secret, redirect_uri, user_id, name, "desc", website) VALUES (:client_id, :client_secret, :redirect_uri, :user_id, :name, :desc, :website) """), { "client_id": generate_string(CLIENT_ID_LENGTH), "client_secret": generate_string(CLIENT_SECRET_LENGTH), "redirect_uri": redirect_uri, "user_id": user_id, "name": name, "website": website, "desc": desc, })
def generate_grant(self, client_id, user_id, redirect_uri, scope=None): code = generate_string(self.token_length) expires = datetime.now() + timedelta(seconds=self.grant_expire) self.persist_grant(client_id, code, scope, expires, redirect_uri, user_id) return code
def generate_grant(self, client_id, user_id, redirect_uri, scope=None): code = generate_string(self.token_length) expires = datetime.now() + timedelta(seconds=self.grant_expire) grant = self.persist_grant(client_id, code, scope, expires, redirect_uri, user_id) return code