В местной библиотеке хотят перейти на цифровой учет книг. Вам необходимо реализовать веб-приложение для них. Библиотекари должны иметь возможность регистрировать читателей, выдавать им книги и освобождать книги (после того, как читатель возвращает книгу обратно в библиотеку). Должна быть настроена аутентификация и авторизация пользователей. Кроме того должна быть настроена защита от вредоносный запросов
В проекте используются две основные сущности:
- Поля: ФИО (UNIQUE), год рождения
- Поля: название, автор, год
Отношение между сущностями: Один ко Многим.
У каждого человека может быть множество книг, а каждая книга может принадлежать только одному человеку.
Для этого проекта создайте новую базу данных с названием "project1". В этой базе данных необходимо создать две таблицы - "Person" и "Book". Для всех таблиц настройте автоматическую генерацию идентификаторов (id).
Необходимый функционал, который должно предоставлять веб-приложение:
- Так как приложение монолитное, была настроена CSRF защита
- Аутентификация и регистрация пользователя.
- Изменения пароля пользователя, если забыли пароль от аккаунта
- У каждой роли свои страницы пользования
- Пользователь может:
- Просматривать и освобождать использованные книги.
- Просматривать свои личные данные, а также преобретенные книги.
- Редактировать логин, дату рождения в формате (mm.dd.yyyy).
- Редактировать пароль.
- Удалять свой аккаунт.
- Выходить с аккаунта.
- Адмиинистратор может:
- Просматривать список, редактировать, блокировать, активировать, и удалять аккаунты.
- Просматривать список, редактировать, и удалять книги.
- Искать книги
- Самый первый пользователь и администратор, может изменить свою роль после подтверждения секретного пароля
- Другие пользователи не будут иметь доступ к этому сайту
- Страницы добавления, изменения и удаления человека.
- Страницы добавления, изменения и удаления книги.
- Страница со списком всех людей, где их имена являются ссылками на страницы человека.
- Страница со списком всех книг, где названия книг являются ссылками на страницы книги.
- Страница человека, на которой отображаются его данные и список взятых книг. Если человек не взял ни одной книги, вместо списка должен быть текст "Человек пока не взял ни одной книги".
- Страница книги, на которой отображаются данные о книге и имя человека, который взял эту книгу. Если книга не была взята никем, должен отображаться текст "Эта книга свободна".
- На странице книги, если книга взята человеком, рядом с его именем должна быть кнопка "Освободить книгу". По нажатию на эту кнопку книга становится доступной для выдачи другому читателю и удаляется из списка книг у данного человека.
- На странице книги, если книга свободна, должен быть выпадающий список со всеми людьми и кнопка "Назначить книгу". По нажатию на эту кнопку, выбранная книга назначается выбранному человеку и появляется в его списке книг.
- Все поля должны проходить валидацию с использованием аннотаций @Valid и Spring Validator, если это необходимо.