logo

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

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

1
2
3
4
5
6
7
8
9
10
11
12
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 файл на сервере

1
2
3
4
5
6
7
8
9
10
11
12
13
//заголовок "таблицы"
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);

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

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

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

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