diff options
author | Pavel Zuna <pzuna@redhat.com> | 2009-06-16 13:44:37 +0200 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2009-07-02 13:33:01 -0400 |
commit | e1e1db9c9fc71c88e847aba8a9a02bc383317c18 (patch) | |
tree | 13f21fa86f4669710106ed8f1eb5dd812ca7e74b /ipalib/plugins/passwd.py | |
parent | 8c7883364ca3c73c9e2c503428495a4405b44e39 (diff) | |
download | freeipa-e1e1db9c9fc71c88e847aba8a9a02bc383317c18.tar.gz freeipa-e1e1db9c9fc71c88e847aba8a9a02bc383317c18.tar.xz freeipa-e1e1db9c9fc71c88e847aba8a9a02bc383317c18.zip |
Rename plugins2 files (remove '2' suffix').
Diffstat (limited to 'ipalib/plugins/passwd.py')
-rw-r--r-- | ipalib/plugins/passwd.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/ipalib/plugins/passwd.py b/ipalib/plugins/passwd.py new file mode 100644 index 000000000..07e4cc301 --- /dev/null +++ b/ipalib/plugins/passwd.py @@ -0,0 +1,78 @@ +# Authors: +# Rob Crittenden <rcritten@redhat.com> +# +# Copyright (C) 2008 Red Hat +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; version 2 only +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +""" +Password changes +""" + +from ipalib import api, errors, util +from ipalib import Command +from ipalib import Str, Password + + +class passwd2(Command): + """ + Change user password. + """ + takes_args = ( + Str('principal', + cli_name='user', + doc='username', + primary_key=True, + autofill=True, + create_default=lambda **kw: util.get_current_principal(), + ), + Password('password'), + ) + + def execute(self, principal, password): + """ + Execute the passwd operation. + + The dn should not be passed as a keyword argument as it is constructed + by this method. + + Returns the entry + + :param principal: The login name or principal of the user + :param password: the new password + """ + ldap = self.api.Backend.ldap2 + + if principal.find('@') != -1: + principal_parts = principal.split('@') + if len(principal_parts) > 2: + raise errors.MalformedUserPrincipal(principal=principal) + else: + principal = '%s@%s' % (principal, self.api.env.realm) + + dn = ldap.find_entry_by_attr( + 'krbprincipalname', principal, 'posixaccount' + ) + + ldap.modify_password(dn, password) + + return True + + def output_for_cli(self, textui, result, principal, password): + assert password is None + textui.print_name(self.name) + textui.print_dashed('Changed password for "%s."' % principal) + +api.register(passwd2) + |