diff --git a/docs/admins/import/Import_Users.md b/docs/admins/import/Import_Users.md index 94c5e5a297c..dc18da51aef 100644 --- a/docs/admins/import/Import_Users.md +++ b/docs/admins/import/Import_Users.md @@ -1,7 +1,7 @@ -tine Admin docs: Admin +tine Admin docs: Admin User Import ================= -Version: Pino 2022.11 +Version: Pelle 2024.11 HowTo: set passwords for users ================= @@ -39,3 +39,16 @@ Anastasia,Baleva,anastasija.baleva@wow.de,abelava ~~~ method=Admin.importUser [-d] [-v] userlist.csv -- definition=admin_user_import_csv [password=PWFORALLNEWUSERS] ~~~ + +HowTo: import list of users with email data and autogenerated password +================= + +userlist.csv: +~~~ +lastname,email,emailForwards,emailForwardOnly +administrator,administrator@my.domain,admin@my.forward1 admin@my.forward2,1 +~~~ + +~~~ +method=Admin.importUser [-d] [-v] userlist.csv -- definition=admin_user_import_csv_for_emailuser.xml +~~~ diff --git a/tine20/Admin/Import/definitions/admin_user_import_csv_for_emailuser.xml b/tine20/Admin/Import/definitions/admin_user_import_csv_for_emailuser.xml index 31fa41039ae..fa5d2a311f7 100644 --- a/tine20/Admin/Import/definitions/admin_user_import_csv_for_emailuser.xml +++ b/tine20/Admin/Import/definitions/admin_user_import_csv_for_emailuser.xml @@ -6,6 +6,7 @@ 1 0 csv + \Tinebase_User_PasswordPolicy::generatePolicyConformPassword firstname @@ -35,5 +36,9 @@ emailForwards emailForwards + + emailForwardOnly + emailForwardOnly + \ No newline at end of file diff --git a/tine20/Tinebase/Model/FullUser.php b/tine20/Tinebase/Model/FullUser.php index 42e65808dd4..eedf6cca37a 100644 --- a/tine20/Tinebase/Model/FullUser.php +++ b/tine20/Tinebase/Model/FullUser.php @@ -320,7 +320,15 @@ public function applyOptionsAndGeneratePassword($options, $password = NULL) } elseif (! empty($options['password'])) { $userPassword = $options['password']; } elseif (! empty($options['passwordGenerator']) && is_callable($options['passwordGenerator'])) { - $userPassword = $options['passwordGenerator']($this); + if (is_string($options['passwordGenerator']) && str_contains($options['passwordGenerator'], + 'Tinebase_User_PasswordPolicy::generatePolicyConformPassword') + ) { + // TODO maybe the default should be a function call without param? how can we detect this? + $userPassword = $options['passwordGenerator'](); + } else { + // passwordGenerator function expects user as its param + $userPassword = $options['passwordGenerator']($this); + } } $this->_addEmailUser($userPassword); diff --git a/tine20/Tinebase/User.php b/tine20/Tinebase/User.php index 2e9e28dae1d..7a1505fb429 100644 --- a/tine20/Tinebase/User.php +++ b/tine20/Tinebase/User.php @@ -1402,7 +1402,7 @@ static public function createSystemUser(string $accountLoginName, Tinebase_Model * @param int $upperCase * @return string * - * TODO should have a param "usePWPolicy" + * @deprecated replace with Tinebase_User_PasswordPolicy::generatePolicyConformPassword */ public static function generateRandomPassword($length = 12, $numSpecialChar = 1, $upperCase = 1) {