summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2011-08-24 18:10:22 -0400
committerRob Crittenden <rcritten@redhat.com>2011-08-24 15:26:20 -0400
commit33fb16067a9dd181a1d54194b9820279f549bc24 (patch)
treedabdc385897af1aa577be21d54bceca39b517519 /ipalib
parent5d9203bb88db976f7d60ca1f1996c53eac4de8c0 (diff)
downloadfreeipa-33fb16067a9dd181a1d54194b9820279f549bc24.zip
freeipa-33fb16067a9dd181a1d54194b9820279f549bc24.tar.gz
freeipa-33fb16067a9dd181a1d54194b9820279f549bc24.tar.xz
Add option to only prompt once for passwords, use in entitle_register
A Password param always prompted to confirm the entered password. This doesn't make sense if you want to prompt for a password to another system like we do with entitlements. This adds a new boolean option to control the Password prompt parameter. https://fedorahosted.org/freeipa/ticket/1695
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/cli.py10
-rw-r--r--ipalib/parameters.py4
-rw-r--r--ipalib/plugins/entitle.py1
3 files changed, 11 insertions, 4 deletions
diff --git a/ipalib/cli.py b/ipalib/cli.py
index 5e1365d..536fe2e 100644
--- a/ipalib/cli.py
+++ b/ipalib/cli.py
@@ -536,7 +536,7 @@ class textui(backend.Backend):
If Default parameter is not None, user can enter an empty input instead
of Yes/No answer. Value passed to Default is returned in that case.
-
+
If Default parameter is None, user is asked for Yes/No answer until
a correct answer is provided. Answer is then returned.
@@ -568,7 +568,7 @@ class textui(backend.Backend):
elif default is not None and data == u'':
return default
- def prompt_password(self, label):
+ def prompt_password(self, label, confirm=True):
"""
Prompt user for a password or read it in via stdin depending
on whether there is a tty or not.
@@ -577,6 +577,8 @@ class textui(backend.Backend):
if sys.stdin.isatty():
while True:
pw1 = getpass.getpass(u'%s: ' % unicode(label))
+ if not confirm:
+ return self.decode(pw1)
pw2 = getpass.getpass(
unicode(_('Enter %(label)s again to verify: ') % dict(label=label))
)
@@ -1050,7 +1052,7 @@ class cli(backend.Executioner):
(param.alwaysask and honor_alwaysask) or self.env.prompt_all:
if param.password:
kw[param.name] = self.Backend.textui.prompt_password(
- param.label
+ param.label, param.confirm
)
elif param.autofill:
kw[param.name] = param.get_default(**kw)
@@ -1070,7 +1072,7 @@ class cli(backend.Executioner):
error = e.error
elif param.password and kw.get(param.name, False) is True:
kw[param.name] = self.Backend.textui.prompt_password(
- param.label
+ param.label, param.confirm
)
for callback in getattr(cmd, 'INTERACTIVE_PROMPT_CALLBACKS', []):
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index e1c0b09..e7e7578 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -1369,6 +1369,10 @@ class Password(Str):
A parameter for passwords (stored in the ``unicode`` type).
"""
+ kwargs = Str.kwargs + (
+ ('confirm', bool, True),
+ )
+
def _convert_scalar(self, value, index=None):
if isinstance(value, (tuple, list)) and len(value) == 2:
(p1, p2) = value
diff --git a/ipalib/plugins/entitle.py b/ipalib/plugins/entitle.py
index 1c1b708..0543b0f 100644
--- a/ipalib/plugins/entitle.py
+++ b/ipalib/plugins/entitle.py
@@ -494,6 +494,7 @@ class entitle_register(LDAPCreate):
Password('password',
label=_('Password'),
doc=_('Registration password'),
+ confirm=False,
),
)