This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch cc/11102-part1a in repository https://gitbox.apache.org/repos/asf/allura.git
commit bb2c5e5febcde2ef22a8258366a12e18f46061aa Author: Carlos Cruz <[email protected]> AuthorDate: Mon May 11 14:02:30 2026 -0600 [#8604] Add the display_name_encrypted field to the User class --- Allura/allura/model/auth.py | 5 +++++ Allura/allura/tests/model/test_auth.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py index b1bfda837..af93abc59 100644 --- a/Allura/allura/model/auth.py +++ b/Allura/allura/model/auth.py @@ -248,6 +248,11 @@ def __get__(self, instance, cls=None): display_name = instance._cache_display_name = instance.get_pref('display_name') return display_name + def __set__(self, instance, value): + instance.__dict__.pop('_cache_display_name', None) + super().__set__(instance, value) + instance.display_name_encrypted = type(instance).encr(state(instance).document[self.name]) + class User(MappedClass, ActivityNode, ActivityObject, SearchIndexable): SALT_LEN = 8 diff --git a/Allura/allura/tests/model/test_auth.py b/Allura/allura/tests/model/test_auth.py index 2496c8ab1..fee927131 100644 --- a/Allura/allura/tests/model/test_auth.py +++ b/Allura/allura/tests/model/test_auth.py @@ -404,6 +404,37 @@ def test_user_index(self): # provided bby auth provider assert 'user_registration_date_dt' in idx + def test_display_name_encrypted_is_populated_on_creation(self): + user = M.User( + username='encrypted-display-name-test', + display_name='Encrypted Display Name') + ThreadLocalODMSession.flush_all() + + assert user.display_name == 'Encrypted Display Name' + assert user.get_pref('display_name') == 'Encrypted Display Name' + assert user.display_name_encrypted + assert user.display_name_encrypted == M.User.encr('Encrypted Display Name') + assert M.User.decr(user.display_name_encrypted) == 'Encrypted Display Name' + assert user.__dict__['__ming__'].state.document.display_name == 'Encrypted Display Name' + + def test_set_display_name_pref_updates_encrypted_field_and_cache(self): + user = M.User( + username='display-name-cache-test', + display_name='Original Display Name') + ThreadLocalODMSession.flush_all() + original_encrypted_display_name = user.display_name_encrypted + + assert user.display_name == 'Original Display Name' + assert user._cache_display_name == 'Original Display Name' + + user.set_pref('display_name', 'Updated Display Name') + + assert not hasattr(user, '_cache_display_name') + assert user.display_name_encrypted != original_encrypted_display_name + assert user.display_name_encrypted == M.User.encr('Updated Display Name') + assert user.display_name == 'Updated Display Name' + assert user.get_pref('display_name') == 'Updated Display Name' + def test_user_index_none_values(self): c.user.email_addresses = [None] c.user.set_pref('telnumbers', [None])
