46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
from cryptography.fernet import Fernet
|
|
from flask import current_app as app
|
|
|
|
REQUIRED_SESSION_VALUES = ['uuid', 'config', 'fernet_keys']
|
|
|
|
|
|
def generate_user_keys(cookies_disabled=False) -> dict:
|
|
"""Generates a set of user keys
|
|
|
|
Args:
|
|
cookies_disabled: Flag for whether or not cookies are disabled by the
|
|
user. If so, the user can only use the default key
|
|
set generated on app init for queries.
|
|
|
|
Returns:
|
|
dict: A new Fernet key set
|
|
|
|
"""
|
|
if cookies_disabled:
|
|
return app.default_key_set
|
|
|
|
# Generate/regenerate unique key per user
|
|
return {
|
|
'element_key': Fernet.generate_key(),
|
|
'text_key': Fernet.generate_key()
|
|
}
|
|
|
|
|
|
def valid_user_session(session: dict) -> bool:
|
|
"""Validates the current user session
|
|
|
|
Args:
|
|
session: The current Flask user session
|
|
|
|
Returns:
|
|
bool: True/False indicating that all required session values are
|
|
available
|
|
|
|
"""
|
|
# Generate secret key for user if unavailable
|
|
for value in REQUIRED_SESSION_VALUES:
|
|
if value not in session:
|
|
return False
|
|
|
|
return True
|