summaryrefslogtreecommitdiffstats
path: root/ipaserver/plugins/passwd.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipaserver/plugins/passwd.py')
-rw-r--r--ipaserver/plugins/passwd.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/ipaserver/plugins/passwd.py b/ipaserver/plugins/passwd.py
index 253a0d35d..1576c4ca8 100644
--- a/ipaserver/plugins/passwd.py
+++ b/ipaserver/plugins/passwd.py
@@ -17,15 +17,22 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
+
from ipalib import api, errors, krb_utils
from ipalib import Command
-from ipalib import Str, Password
+from ipalib import Password
from ipalib import _
from ipalib import output
+from ipalib.parameters import Principal
from ipalib.plugable import Registry
-from .baseuser import validate_principal, normalize_principal
from ipalib.request import context
+from ipapython import kerberos
from ipapython.dn import DN
+from ipaserver.plugins.service import validate_realm, normalize_principal
+
+if six.PY3:
+ unicode = str
__doc__ = _("""
Set a user's password
@@ -59,7 +66,7 @@ def get_current_password(principal):
be ignored later.
"""
current_principal = krb_utils.get_principal()
- if current_principal == normalize_principal(principal):
+ if current_principal == unicode(normalize_principal(principal)):
return None
else:
return MAGIC_VALUE
@@ -69,12 +76,14 @@ class passwd(Command):
__doc__ = _("Set a user's password.")
takes_args = (
- Str('principal', validate_principal,
+ Principal(
+ 'principal',
+ validate_realm,
cli_name='user',
label=_('User name'),
primary_key=True,
autofill=True,
- default_from=lambda: krb_utils.get_principal(),
+ default_from=lambda: kerberos.Principal(krb_utils.get_principal()),
normalizer=lambda value: normalize_principal(value),
),
Password('password',
@@ -114,6 +123,8 @@ class passwd(Command):
"""
ldap = self.api.Backend.ldap2
+ principal = unicode(principal)
+
entry_attrs = ldap.find_entry_by_attr(
'krbprincipalname', principal, 'posixaccount', [''],
DN(api.env.container_user, api.env.basedn)