В своем подходе мне с самого начала не нравилось, что при создании записи по шаблону нужно вручную запускать генератор пароля. И с самого начала чуть было не нашлось решение — назначать шаблонам пароль {NEWPASSWORD}
. Но пришлось его забраковать, поскольку можно нечаянно ткнуть на копирование шаблонного пароля — и после этого записи будут создаваться с одинаковым паролем.
Сейчас подумал, что надо было просто соорудить из регулярных выражений проверку, в какой группе лежит запись. Если в templates — вернуть пустоту, если нет — сгенерировать пароль и вернуть его.
Итак, в каждой шаблонной записи указываем пароль {T-REPLACE-RX:!{T-REPLACE-RX:#{{GROUP}#^\{templates$##}!(\{).*!$1NEWPASSWORD}!}
(предполагаем, что группа шаблонов называется templates
). В результате, когда создадим запись по шаблону и попросим у нее пароль (копированием, перетаскиванием, автонабором...) — он сгенерируется автоматически.
Подчеркну: пароль появится не в момент создания записи, а после первого обращения к нему. Запись в этот момент автоматически изменится: новый пароль запишется в соответствующее поле.
Если же скопировать пароль из шаблона — в буфер попадет пустая строка, а сам шаблон останется нетронутым.
Если определенному шаблону нужен особый профиль пароля, это тоже можно задать, например: {T-REPLACE-RX:!{T-REPLACE-RX:#{{GROUP}#^\{templates$##}!(\{).*!$1NEWPASSWORD:/Simple/}!}
(предполагаем, что есть пользовательский профиль генератора Simple
).
Пока не решил, менять ли статью и прилагаемую «сборку» под этот трюк: выглядит он пугающе для новичков, да и недостаточно проверен.
По-хорошему, нужно проверять не просто имя группы, а начало пути к ней, так как в моей сборке есть еще подгруппа для неиспользуемых шаблонов: {T-REPLACE-RX:!{T-REPLACE-RX:#{{GROUP_PATH}#^\{\<service\>\.templates.*##}!(\{).*!$1NEWPASSWORD}!}
.