
    Či                     4    d dl mZ d dlmZmZ  G d d      Zy)    )settings)FernetInvalidTokenc                   r    e Zd ZdZi ZdZed        Zededefd       Z	ededefd       Z
edefd	       Zy)
SecretManagerz
    Enterprise-grade secret handler:
    - Lazy decryption
    - Automatic caching
    - Supports encrypted OR plain values
    - Centralized logic
    Nc                     | j                   ,t        t        j                  j	                               | _         | j                   S N)_fernetr   r   MASTER_ENCRYPTION_KEYencode)clss    J/var/www/html/dp2/backend_v2.1/server/apps/core/services/secret_manager.py_get_fernetzSecretManager._get_fernet   s1    ;; !?!?!F!F!HICK{{    valuereturnc                 x    | j                         j                  |j                               j                         S r	   )r   encryptr   decoder   r   s     r   r   zSecretManager.encrypt   )     ((8??AAr   c                 x    | j                         j                  |j                               j                         S r	   )r   decryptr   r   r   s     r   r   zSecretManager.decrypt   r   r   setting_namec                    || j                   v r| j                   |   S t        t        |      }	 | j                  |      }|| j                   |<   | j                   |   S # t        t
        f$ r || j                   |<   Y /w xY wr	   )_cachegetattrr   r   r   AttributeError)r   r   	raw_value	decrypteds       r   getzSecretManager.get   s    3::%::l++Hl3		1I.I'0CJJ|$ zz,'' n- 	1'0CJJ|$	1s    A A?>A?)__name__
__module____qualname____doc__r   r
   classmethodr   strr   r   r!    r   r   r   r      s     FG 
 BC BC B B BC BC B B (s ( (r   r   N)django.confr   cryptography.fernetr   r   r   r(   r   r   <module>r+      s      4(( ((r   