logo

[ELMA3] Автоматическая генерация паролей

При создании новых пользователей может возникнуть необходимость сгенерировать пароли в автоматическом режиме. Особенно актуален этот метод при одновременном создании большого количества пользователей. Генерацию и запись паролей можно осуществить с помощью сценария. Для этого необходимо создать сценарий (например, в процессе). Добавить метод:

        public static string GetPass(Random r, int x )
        {
            string pass="";
            while (pass.Length < x)
            {
                Char c = (char)r.Next(33, 125);
	        //33, 125 это границы используемых символов
                if (Char.IsLetterOrDigit(c))
                    pass += c;
            }
            return pass;
        }

Метод принимает Random и число, возвращает строчку с паролем. Число отвечает за длину пароля.

Сценарий ниже позволяет сгенерировать и присвоить пароль выбранному пользователю системы, а затем сохранить данные пользователя на диске сервера.

Для использования этого сценария не обязательно публиковать и запускать процесс. Достаточно запустить его в режиме эмуляции с отключенным откатом произведенных изменений.

Данный сценарий реализован стандартными методами C# и ELMA, и не требует доработки. В ходе его исполнения, каждому пользователю генерируется уникальный пароль. После генерации пароля, ФИО, логин и пароль пользователя записываются в .txt файл на сервере

//заголовок "таблицы"
string text = "ФИО \\ Login \\ Password" + Environment.NewLine + Environment.NewLine;           //загружаем всех пользователей
var r = new Random();
if (context.User != null)
{
	string tempPassword = GetPass(r, 8);
	//в базе пароли хранятся в зашифрованном виде, поэтому записать их в файл нужно до записи пароля пользователю
	text += context.User.FullName + " \\ " + context.User.UserName + " \\ " + tempPassword + Environment.NewLine + Environment.NewLine;                
	//метод PasswordReset принимает ID пользователя и новый пароль
	UserManager.Instance.PasswordReset(context.User.Id, tempPassword);
}
//запись данных в файл, первый аргумент путь до файла, если файла не существует, он будет создан
System.IO.File.WriteAllText("C:\\Login.txt", text);

Для работы сценария необходимо подключить пространства имен:

using EleWise.ELMA.Security.Managers;
using System.IO

Примеры файла с данными пользователя прикреплен к статье.

Прикрепленные файлы