9.2.2. Пользователи

Для каждого пользователя системы создается соответствующий экземпляр сущности sec$User. Он содержит уникальный логин, хэш пароля, ссылку на группу доступа, список ролей и другие атрибуты. Управление пользователями осуществляется с помощью экрана AdministrationUsers:

security user browser

Помимо стандартных действий создания, изменения и удаления записей имеются следующие:

  • Copy - быстрое создание нового пользователя на основе выбранного. Новый пользователь будет иметь такую же группу доступа и набор ролей. И то и другое можно изменить в появляющемся экране редактирования нового пользователя.

  • Copy settings - позволяет скопировать выбранным пользователям настройки интерфейса, сделанные каким-либо другим пользователем. Настройки интерфейса включают в себя представления таблиц, положение разделителей контейнеров SplitPanel, наборы фильтров и папок поиска.

  • Change password - позволяет администратору системы задать новый пароль выбранному пользователю.

  • Reset passwords - позволяет произвести следующие действия над выбранными пользователями:

    • Если в появляющемся окне Reset passwords for selected users не включать флажок Generate new passwords, то пользователям будет установлен признак Change password at next logon. При следующем успешном логине пользователя ему будет предложено сменить свой пароль.

      Tip

      Для того, чтобы пользователь мог сменить себе пароль, у него должно быть право на экран sec$User.changePassword. Имейте это в виду при конфигурировании ролей, особенно если вы назначаете всем пользователям Denying роль. Данный экран можно найти внутри элемента Other screens в редакторе роли.

    • Если в окне Reset passwords for selected users включить флажок Generate new passwords, то для выбранных пользователей будут сгенерированы и показаны новые случайные пароли. Список новых паролей можно выгрузить в формат XLS, и например, разослать пользователям. Кроме того, для каждого пользователя будет установлен признак Change password at next logon, что делает сгенерированный пароль одноразовым.

    • Если в дополнение к Generate new passwords включить флажок Send emails with generated passwords, то новые одноразовые пароли не будут показаны администратору, а автоматически разосланы соответствующим пользователям на их адреса email. Отправка осуществляется асинхронно, поэтому требуется настройка назначенного задания, упомянутая в разделе Методы отправки.

      Шаблоны этих email можно отредактировать. Для этого необходимо создать в модуле core шаблоны по аналогии с reset-password-subject.gsp и reset-password-body.gsp. Для локализации можно добавить соответствующие файлы шаблонов с суффиксами локалей, как это сделано в платформе.

      В шаблонах используется синтаксис Groovy SimpleTemplateEngine, что позволяет использовать блоки кода Groovy прямо в тексте шаблона. Например:

      Hello <% print (user.active ? user.login : 'user') %>
      
      <% if (user.email.endsWith('@company.com')) { %>
      
      The password for your account has been reset.
      
      Please login with the following temporary password:
      ${password}
      and immediately create a new one for the further work.
      
      Thank you
      
      <% } else {%>
      
      Please contact your system administrator for a new password.
      
      <%}%>

      В шаблонах доступны следующие переменные: user, password и persistence. Вы также можете использовать бины Spring среднего слоя, для этого импортируйте класс AppBeans и получите нужный бин с помощью метода AppBeans.get().

      После переопределения шаблонов в app.properties модуля core необходимо задать следующие свойства:

      cuba.security.resetPasswordTemplateBody = <relative path to your file>
      cuba.security.resetPasswordTemplateSubject = <relative path to your file>

      Для удобства настройки в production, шаблоны можно разместить или переопределить в конфигурационном каталоге и задать свойства в local.app.properties.

Рассмотрим экран редактирования пользователя:

security user editor
  • Login - обязательный к заполнению уникальный логин пользователя.

  • Group - группа доступа.

  • Last name, First name, Middle name - части полного имени пользователя.

  • Name - полное имя пользователя. Автоматически формируется на основе вводимых частей (Last, First, Middle) и правила, заданного свойством приложения cuba.user.fullNamePattern. Может быть произвольно изменено вручную.

  • Position - должность.

  • Language - язык интерфейса, устанавливаемый для пользователя, если возможность выбирать язык при входе в систему отключена при помощи свойства приложения cuba.localeSelectVisible.

  • Time Zoneчасовой пояс, в соответствии с которым будут отображаться и вводиться значения типа timestamp.

  • Email - адрес email.

  • Active - если данный флаг не установлен, то пользователь не может войти в систему.

  • Permitted IP Mask - маска разрешенных IP-адресов, с которых возможен вход в систему.

    Маска представляет собой список адресов через запятую. Поддерживаются как адреса формата IPv4, так и адреса формата IPv6. В первом случае адрес должен состоять из четырех чисел, разделенных точками, при этом любая часть вместо числа может содержать знак "*", что означает "любое число". Адрес в формате IPv6 представляет собой восемь групп по четыре шестнадцатеричные цифры, разделенных двоеточием. Любая группа также может быть заменена знаком "*".

    Маска может содержать адреса только одного формата. Наличие адресов формата IPv4 и IPv6 одновременно недопустимо.

    Пример: 192.168.*.*

  • Roles - список ролей пользователя.

  • Substituted Users - список замещаемых пользователей.