예제 #1
0
def test_update_from_jwt_token(session):  # pylint: disable=unused-argument
    """Assert User is updated from a JWT and an existing User model."""
    token = {
        'preferred_username': '******',
        'firstname': 'Bobby',
        'lasname': 'Joe',
        'realm_access': {
            'roles': ['edit', 'uma_authorization', 'basic']
        },
        'sub': '1b20db59-19a0-4727-affe-c6f64309fd04'
    }
    user = User.create_from_jwt_token(token, 'Bobby', 'Joe')

    updated_token = {
        'preferred_username': '******',
        'firstname': 'Bob',
        'lastname': 'Joe',
        'realm_access': {
            'roles': ['edit', 'uma_authorization', 'basic']
        },
        'sub': '1b20db59-19a0-4727-affe-c6f64309fd04'
    }
    user = User.update_from_jwt_token(user, updated_token, 'Bob', 'Joe')

    assert user.firstname == 'Bob'
예제 #2
0
def test_update_from_jwt_token_no_user(session):  # pylint:disable=unused-argument
    """Assert that a user is not updateable without a user (should return None)."""
    token = {
        'preferred_username': '******',
        'firstname': 'Bobby',
        'lasname': 'Joe',
        'realm_access': {
            'roles': ['edit', 'uma_authorization', 'basic']
        },
        'sub': '1b20db59-19a0-4727-affe-c6f64309fd04'
    }

    user = User.update_from_jwt_token(None, token, None, None)
    assert user is None
예제 #3
0
파일: user.py 프로젝트: sumesh-aot/sbc-auth
    def save_from_jwt_token(cls, token: dict = None):
        """Save user to database (create/update)."""
        if not token:
            return None

        existing_user = UserModel.find_by_jwt_token(token)
        if existing_user is None:
            user_model = UserModel.create_from_jwt_token(token)
        else:
            user_model = UserModel.update_from_jwt_token(token, existing_user)

        if not user_model:
            return None

        user = User(user_model)
        return user
예제 #4
0
    def save_from_jwt_token(cls, token: dict, request_json: Dict = None):
        """Save user to database (create/update)."""
        current_app.logger.debug('save_from_jwt_token')
        if not token:
            return None
        request_json = {} if not request_json else request_json

        is_anonymous_user = token.get('accessType',
                                      None) == AccessType.ANONYMOUS.value
        if not is_anonymous_user:
            existing_user = UserModel.find_by_jwt_token(token)
        else:
            existing_user = UserModel.find_by_username(
                token.get('preferred_username'))

        first_name, last_name = User._get_names(existing_user, request_json,
                                                token)

        if existing_user is None:
            user_model = UserModel.create_from_jwt_token(
                token, first_name, last_name)
        else:
            user_model = UserModel.update_from_jwt_token(
                existing_user,
                token,
                first_name,
                last_name,
                is_login=request_json.get('isLogin', False))

        if not user_model:
            return None

        # if accepted , double check if there is a new TOS in place .IF so , update the flag to false
        if user_model.is_terms_of_use_accepted:
            document_type = DocumentType.TERMS_OF_USE_DIRECTOR_SEARCH.value if is_anonymous_user \
                else DocumentType.TERMS_OF_USE.value
            # get the digit version of the terms of service..ie d1 gives 1 ; d2 gives 2..for proper comparison
            latest_version = util.digitify(
                DocumentService.find_latest_version_by_type(document_type))
            current_version = util.digitify(
                user_model.terms_of_use_accepted_version)
            if latest_version > current_version:
                user_model.is_terms_of_use_accepted = False

        user = User(user_model)
        return user
예제 #5
0
def test_update_from_jwt_token_no_token(session, monkeypatch):  # pylint:disable=unused-argument
    """Assert that a user is not updateable without a token (should return None)."""
    token = {
        'preferred_username': '******',
        'firstname': 'Bobby',
        'lasname': 'Joe',
        'realm_access': {
            'roles': ['edit', 'uma_authorization', 'basic']
        },
        'sub': '1b20db59-19a0-4727-affe-c6f64309fd04'
    }
    patch_token_info(token, monkeypatch)
    existing_user = User.create_from_jwt_token('Bobby', 'Joe')

    token = None
    patch_token_info(token, monkeypatch)
    user = User.update_from_jwt_token(existing_user, 'Bobby', 'Joe')
    assert user is None
예제 #6
0
    def save_from_jwt_token(cls, token: dict = None):
        """Save user to database (create/update)."""
        current_app.logger.debug('save_from_jwt_token')
        if not token:
            return None
        if token.get('accessType', None) != AccessType.ANONYMOUS.value:
            existing_user = UserModel.find_by_jwt_token(token)
        else:
            existing_user = UserModel.find_by_username(token.get('preferred_username'))

        if existing_user is None:
            user_model = UserModel.create_from_jwt_token(token)
        else:
            user_model = UserModel.update_from_jwt_token(token, existing_user)

        if not user_model:
            return None

        user = User(user_model)
        return user