Разработать систему управления пользователями. Система должна представлять собой WEB-приложение, которое предоставляет интерфейс управления пользователями. Система должна поддерживать следующую ролевую модель:
| Роль | Доступные действия |
|---|---|
| USER | Авторизция (Login) Просматривать список пользователей (List) Просматривать детали любого пользователя (View) Выход (Logout) |
| ADMIN | Авторизция (Login) Просматривать список пользователей (List) Просматривать детали любого пользователя (View) Создание нового пользователя (New/Edit) Редактирование существующего пользователя (New/Edit) Lock/Unlock пользователя (Lock/Unlock) Выход (Logout) |
Основная сущность в системе – UserAccount.
| Field | Description | Length | Validation |
|---|---|---|---|
| Username | Имя пользователя для авторизации. | 3-16 | Только латинские символы; Должна быть уникальным |
| Password | Пароль пользователя | 3-16 | Только латинские символы и цифры. Минимум один символ; Минимум одна цифра; |
| First Name | Имя. | 1-16 | Только латинские символы |
| Last Name | Фамилия | 1-16 | Только латинские символы |
| Role | Роль пользователя USER or ADMIN На UI должно быть dropdown. |
||
| Status | Состояние пользователя ACTIVE or INACTIVE На UI должно быть dropdown. |
||
| Created At | Дата заведения пользователя. Проставляется автоматически при записи в БД. |
Пароли в БД хранить в хешированоым виде с применением алгоритма bcrypt.
В системе должны быть следующие страницы:
| Страница | URL | Описание | Доступные действия (с учетом роли) |
|---|---|---|---|
| Login | /login | Авторизация в системе | Вход в систему; Если состояние пользователя INACTIVE, то вход невозможен; Если логин/пароль не верен, то вход невозможен; |
| List | /user | Список пользователей | Опционально: 1. Фильтрация списка по Username 2. Фильтрация списка по Role 3. Пагинация |
| View | /user/{id} | Просмотр деталей пользователя | Lock/Unlock: должно приводить к смене состояния ACTIVE/INACTIVE |
| New | /user/new | Создание нового пользователя | При наличии валидационных ошибок должно показываться соответствующее сообщение на UI. |
| Edit | /user/{id}/edit | Редактирование пользователя | При наличии валидационных ошибок должно показываться соответствующее сообщение на UI. |
Предпочтительный стек технологий:
- Java 8+
- Spring (Spring Boot, Spring MVC, Spring Data, Spring Security)
- PostgreSQL
- Html Template Engine - любой (Thymeleaf, Freemarker, etc.)
- Gradle
- Опционально: сборка docker-образов Можно использовать сторонние библиотеки.