Source code for univention.lib.password

#!/usr/bin/python3
#
# Univention Common Python Library
#
# SPDX-FileCopyrightText: 2010-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only

"""|UDM| library for changing user pasword"""

from ldap.filter import filter_format

import univention.admin.modules
import univention.admin.uldap


univention.admin.modules.update()


[docs] def change(username: str, password: str) -> None: """ Change the password of the given user >>> from univention.lib.password import change # doctest: +SKIP >>> change('Administrator', 'secret12345') # doctest: +SKIP >>> change('Administrator@DOMAIN.DE', 'secret12345') # doctest: +SKIP """ try: lo, pos = univention.admin.uldap.getAdminConnection() except Exception: lo, pos = univention.admin.uldap.getMachineConnection() module = univention.admin.modules._get('users/user') univention.admin.modules.init(lo, pos, module) if '@' in username: # krb5Principal filter = filter_format('krb5PrincipalName=%s', [username]) else: filter = filter_format('uid=%s', [username]) objects = module.lookup(None, lo, filter, superordinate=None, unique=True, required=True, timeout=-1, sizelimit=0) # search was unique and required object = objects[0] object.open() object['password'] = str(password) object.modify()