Fixes IndexError on save with removed member forwarding email (#11)
* Fixed IndexError if a non existent field gets queried for a value. Using dict.get to either get a value or provide a reasonable default * Removed list construction around new_key value * Clean up source code with 80x25 terminal and vim (complies with PEP-8) * Added some docstrings
This commit is contained in:
parent
4f093c0899
commit
09af25761c
7 changed files with 409 additions and 194 deletions
|
|
@ -8,6 +8,7 @@ from Crypto.Cipher import AES
|
|||
|
||||
ENCRYPTED_LDAP_PASSWORD = 'encrypted_ldap_password'
|
||||
|
||||
|
||||
def encrypt_ldap_password(cleartext_pw):
|
||||
"""
|
||||
Encrypts the cleartext_pw with a randomly generated key.
|
||||
|
|
@ -28,6 +29,7 @@ def encrypt_ldap_password(cleartext_pw):
|
|||
message = iv + aes.encrypt(cleartext_pw)
|
||||
return base64.b64encode(message).decode(), base64.b64encode(key).decode()
|
||||
|
||||
|
||||
def decrypt_ldap_password(message, key):
|
||||
"""
|
||||
Takes an encrypted, base64 encoded password and the base64 encoded key.
|
||||
|
|
@ -47,6 +49,7 @@ def decrypt_ldap_password(message, key):
|
|||
cleartext_pw = aes.decrypt(ciphertext)
|
||||
return cleartext_pw
|
||||
|
||||
|
||||
def store_ldap_password(request, password):
|
||||
"""
|
||||
Stores the password in an encrypted session storage and returns the key.
|
||||
|
|
@ -56,9 +59,10 @@ def store_ldap_password(request, password):
|
|||
request.session.save()
|
||||
return key
|
||||
|
||||
|
||||
def get_ldap_password(request):
|
||||
cookies = request.COOKIES
|
||||
key = cookies.get('sessionkey', None)
|
||||
if not key:
|
||||
raise Exception('sessionkey not found in cookies.')
|
||||
return decrypt_ldap_password(request.session[ENCRYPTED_LDAP_PASSWORD], key)
|
||||
return decrypt_ldap_password(request.session[ENCRYPTED_LDAP_PASSWORD], key)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue