summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/etoolkit/etoolkit.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/etoolkit/etoolkit.py b/src/etoolkit/etoolkit.py
index 9b95a73..aab42a0 100755
--- a/src/etoolkit/etoolkit.py
+++ b/src/etoolkit/etoolkit.py
@@ -75,12 +75,16 @@ class EtoolkitInstance:
75 @property 75 @property
76 def master_password(self) -> str: 76 def master_password(self) -> str:
77 """master_password-property""" 77 """master_password-property"""
78 return self._master_password 78 if self._master_password is not None:
79 return self._master_password
80 return None if self._parent is None else self._parent.master_password
79 81
80 @master_password.setter 82 @master_password.setter
81 def master_password(self, value): 83 def master_password(self, value):
82 """master_password-property setter""" 84 """master_password-property setter"""
83 self._master_password = value 85 self._master_password = value
86 if self._parent is not None and self._parent.master_password is None:
87 self._parent.master_password = value
84 88
85 @property 89 @property
86 def master_password_hash(self) -> str: 90 def master_password_hash(self) -> str:
@@ -106,6 +110,9 @@ class EtoolkitInstance:
106 def prompt_func(self, value): 110 def prompt_func(self, value):
107 """prompt_func-property setter""" 111 """prompt_func-property setter"""
108 self._prompt_func = value 112 self._prompt_func = value
113 if self._parent is not None and self._parent.prompt_func is None:
114 # will be set even if None
115 self._parent.prompt_func = value
109 116
110 @property 117 @property
111 def raw_env_variables(self) -> dict: 118 def raw_env_variables(self) -> dict:
@@ -406,7 +413,8 @@ class EtoolkitInstance:
406 raise EtoolkitInstanceError( 413 raise EtoolkitInstanceError(
407 'Neither password or prompt function set' 414 'Neither password or prompt function set'
408 ) 415 )
409 self._master_password = self._prompt_func( 416 # use master_password setter in order to propagate to parent
417 self.master_password = self._prompt_func(
410 self._master_password_hash, confirm=False 418 self._master_password_hash, confirm=False
411 ) 419 )
412 return EtoolkitInstance.decrypt(self._master_password, evalue) 420 return EtoolkitInstance.decrypt(self._master_password, evalue)