Modify data server side before view data

16 views
Skip to first unread message

Fabio Lenzarini

unread,
Dec 22, 2025, 12:06:42 PM12/22/25
to Jam.py Users Mailing List
To further increase data security on the server side, I would like to decrypt the encrypted data before displaying it.

I tried in on_after_open but I can't do it.

thanks
Fabio

Dean D. Babic

unread,
Dec 22, 2025, 9:02:05 PM12/22/25
to Jam.py Users Mailing List
I do not think anyone does it with Jam. 
Hide the clear text data with ****** 

Fabio Lenzarini

unread,
Dec 23, 2025, 6:23:37 AM12/23/25
to Jam.py Users Mailing List
For those interested, I have implemented server-side data encryption logic before saving data to the database and decryption when reading it.

In my case, the text is the “personal_message” field.
It is read from the DB and decrypted.
During writing, it is then encrypted again.

def on_after_open(item, query, params, connection, dataset):
    if item.session:
        user_id     = item.session['user_info']['user_id']
        users = item.task.users.copy(handlers=False)
        users.set_where(id = user_id)
        users.open()
     
        for d in dataset:
            if hasattr(d, "personal_message"):
                if users.password_encryption.value and users.salt_encryption.value:                
#                    pprint(d.personal_message.text)
                    salt = base64.b64decode(users.salt_encryption.value)
                    if d.personal_message.text:
                        d.personal_message.text = item.task.users.decrypt_text(
                            d.personal_message.text,
                            users.password_encryption.value,
                            salt
                        )
#                    pprint(d.personal_message.text)

def on_apply(item, delta, params, connection):
    if item.session:
        user_id     = item.session['user_info']['user_id']
        users = item.task.users.copy(handlers=False)
        users.set_where(id = user_id)
        users.open()

        user_name   = item.session['user_info']['user_name']
        if user_id:
            for d in delta:

                if users.password_encryption.value and users.salt_encryption.value:                
#                    pprint(d.personal_message.text)
                    salt = base64.b64decode(users.salt_encryption.value)
                    if d.personal_message.text:
                        d.personal_message.text = item.task.users.encrypt_text(
                            d.personal_message.text,
                            users.password_encryption.value,
                            salt
                        )
#                    pprint(d.personal_message.text)                
Reply all
Reply to author
Forward
0 new messages