[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
Примеры файла с данными пользователя прикреплен к статье.