+7 495 008 8452 пн.-пт. 10:00 – 17:00
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Универсализируем randString

Издревле сложилось, что в Битрикс для создания случайного пароля пользователя (если он не вводит его сам) используется randString. Простая функция, выдающая набор символов. Но эта функция абсолютно не учитывает политику безопасности - что, например, для определенной группы пользователей, куда мы добавляем пользователя, должно быть требование к паролю (например, наличие символов пунктуации).

Я подсмотрел в ядре кусок кода, и оформил его в простую функцию.
   function randomPassword($gid)
   {
      if (!is_array($gid)) {
         if ($gid > 0) {
            $gid = array($gid);
         } else {
            $gid = array();
         }
      }
      $policy = CUser::GetGroupPolicy($gid);
      $length = $policy['PASSWORD_LENGTH'];
      if ($length <= 0) {
         $length = 6;
      }
      $chars = array(
         'abcdefghijklnmopqrstuvwxyz',
         'ABCDEFGHIJKLNMOPQRSTUVWXYZ',
         '0123456789',
      );
      if ($policy['PASSWORD_PUNCTUATION'] == 'Y') {
         $chars[] = ",.<>/?;:'\"[]{}\|`~!@#\$%^&*()-_+=";
      }
      return randString($length+2, $chars);
   }
Код рекомендую копировать отсюда http://bxapi.ru/code/hjggwqnItEFiucW/


Использовать просто:
echo CMainUtils::randimPassword(array(1, 2)); 
//6Gv#r7~AZl_0 (пароль выдал сложный, так как группа админов) 
echo CMainUtils::randimPassword(array(2)); 
//zF44YwCy (пароль простой, так как группа ереван)  
echo CMainUtils::randimPassword(2); 
//R0qK5jP0 (аналогично) 

PS: Рекомендую улучшенную версию от Андрея.


Назад в раздел

Подписаться на новые материалы раздела:












CAPTCHA