def init_create_user():
    user = User(None)
    print()
    print("address/key:", user.address)
    print()
    print("Keep it secret, keep it safe")
    return user
Exemplo n.º 2
0
def test_new_user_properties(mocker):
    """ARRANGE"""
    expected_address = "fake_address"
    expected_network_id = "fake_network_id"
    mocker.patch('client.utils.PlugApiClient', MockApiClient)
    mocker.patch('client.utils.SqliteKeyManager', MockKeyManager)
    """ACT"""
    user = User(None)
    """ASSERT"""
    assert user.address == expected_address
    assert user.network_id == expected_network_id
    assert type(user.key_manager) is MockKeyManager
    assert type(user.client) is MockApiClient
Exemplo n.º 3
0
 def get_session(self,
                 session_id: str) -> Union[Tuple[Session, User], None]:
     with connect(self.__db_path) as db:
         c = db.cursor()
         session_row = c.execute("SELECT detail FROM session WHERE id = ?",
                                 (session_id, )).fetchone()
         if session_row is None or 0 == len(session_row):
             return None
         else:
             session = Session(session_detail=json.loads(session_row[0]))
             user_row = c.execute("SELECT email FROM user WHERE sub = ?",
                                  (session.get_user_sub(), )).fetchone()
             if user_row is None or 0 == len(user_row):
                 return None
             user = User(sub=session.get_user_sub(), email=user_row[0])
             return session, user
Exemplo n.º 4
0
def init_create_user():
    user = User(None)
    print()
    print("address/key:", user.address)
    print()
    return user
Exemplo n.º 5
0
 def user(self):
     return User(self._connector, self._api_prefix)
Exemplo n.º 6
0
def redirect_uri_handler():
    token_is_valid = False
    if 'state' not in session or session['state'] != request.args['state']:
        raise BadRequest('Missing or invalid state')

    if 'code' not in request.args:
        raise BadRequest('No code in response')

    try:
        token_data = _client.get_token(request.args['code'])
        if "error" in token_data:
            err_response = jsonify({
                "success":
                False,
                "message":
                token_data["error"],
                "detail":
                "" if "error_description" not in token_data else
                token_data["error_description"],
                "status_code":
                500
            })
            err_response.status_code = 500
            return err_response
    except Exception as e:
        raise BadRequest('Could not fetch token(s): ' + str(e))
    session.pop('state', None)

    # Store in basic server session, since flask session use cookie for storage
    user_session = Session()

    if 'access_token' in token_data:
        user_session.set_access_token(token_data['access_token'])

    if _jwt_validator and 'id_token' in token_data:
        # validate JWS; signature, aud and iss.
        # Token type, access token, ref-token and JWT
        if 0 == len(_config.get_issuer()):
            raise BadRequest('Could not validate token: no issuer configured')

        try:
            _jwt_validator.validate(token_data['id_token'],
                                    _config.get_issuer(),
                                    _config.get_client_id())
            token_is_valid = True
        except JwtValidatorException as bs:
            raise BadRequest('Could not validate token: ' + str(bs))
        except Exception as ve:
            raise BadRequest('Unexpected exception: ' + str(ve))

        user_session.set_id_token(token_data['id_token'])

    if not token_is_valid:
        raise BadRequest('Forbidden', status_code=403)

    if 'refresh_token' in token_data:
        user_session.set_refresh_token(token_data['refresh_token'])

    user_info = _client.get_user_info(user_session.get_access_token())
    if "email" not in user_info:
        user = User(email=None, sub=user_info["sub"])
    else:
        user = User(email=user_info["email"], sub=user_info["sub"])
    user_session.set_user_sub(user.get_sub())
    _db.save_session(user_session, user)
    session['session_id'] = user_session.get_id()
    return redirect('/')