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

Сущность User

Пользователи приложения Jmix определяются классом User, который Studio автоматически создает в новом проекте. Это сущность JPA, реализующая интерфейс JmixUserDetails, который имеет ряд методов, требуемых фреймворком:

  • getUsername() возвращает уникальное имя пользователя.

  • getPassword() возвращает хэшированный пароль.

  • isEnabled(), isAccountNonExpired(), isAccountNonLocked(), isCredentialsNonExpired() указывают, может ли пользователь войти в систему.

  • getAuthorities(), setAuthorities() используются фреймворком для привязки пользователя к набору разрешений при входе в систему.

Пользователи хранятся в основной базе данных приложения. По умолчанию сущность User и соответствующая таблица базы данных имеют следующие атрибуты:

  • id, version являются стандартными атрибутами первичного ключа и оптимистической блокировки.

  • username, password, enabled хранят значения, возвращаемые методами интерфейса JmixUserDetails.

  • email, firstName, lastName хранят дополнительную информацию о пользователях.

Вы можете определить любое количество дополнительных атрибутов, необходимых для приложения, например, department или position.

Управление пользователями

Новый проект содержит скрипт миграции базы данных 010-init-user.xml, который создает пользователя с именем и паролем admin/admin и предоставляет ему полный доступ к приложению, связывая сущность с ролью system-full-access.

Новый проект также содержит экраны UI для управления пользователями, см. ApplicationUsers. Эти экраны позволяют создавать, редактировать и удалять пользователей, изменять и сбрасывать их пароли. Чтобы назначить роли пользователю, нажмите кнопку Role assignments в экране списка пользователей.

Фреймворк содержит роль ui-minimal, которая дает разрешения на вход в UI и использование некоторых рядовых элементов UI. Назначьте эту роль новым пользователям, которые будут взаимодействовать с приложением через UI, так как в противном случае они не смогут войти в систему.

Встроенные пользователи

Любое приложение Jmix со стандартной подсистемой безопасности имеет два встроенных пользователя:

  • Пользователь Anonymous соответствует не прошедшим аутентификацию пользователям. Это позволяет предоставлять пользователю некоторые разрешения до того, как он войдет в систему.

  • Пользователь System требуется для механизма системной аутентификации. Он используется, когда нет реального пользователя, взаимодействующего с приложением, например, при его запуске или при вызове бизнес-метода планировщиком.

Встроенные объекты пользователей не хранятся в базе данных, а создаются при запуске приложения классом проекта DatabaseUserRepository. Обоих пользователей можно настроить в методах initAnonymousUser() и initSystemUser() этого класса. По умолчанию системный пользователь связан с ролью system-full-access и, следовательно, имеет все разрешения.

Анонимный пользователь по умолчанию не имеет никаких разрешений.