Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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
Ejemplo n.º 10
0
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,
            })
Ejemplo n.º 11
0
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,
        })
Ejemplo n.º 12
0
 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
Ejemplo n.º 13
0
 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