Skip to content

This is my Pet-project. Simple web-site for managment events with user auth system! I practice Java here. Look at screenshots in repo!

Notifications You must be signed in to change notification settings

pavelvic/pet-project-MakeAnEv2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Что это

Это мой pet-project на Java EE. Это веб-сайт для организации частных мероприятий. На сайте можно зарегистрироваться, поэтому каждый пользователь имеет свой профиль, который может редактировать. Некоторые пользователи наделены правами создавать мероприятия и управлять карточками других пользователей (привилегированные пользователи). Обычные пользователи могут искать мероприятия, просматривать их, регистрироваться для участия (или отказываться от участия). Информация о пользователях и мероприятиях хранится в базе данных. Имеется лаконичный пользовательский интерфейс.

Технологии

  • Веб Java EE: Servlets (JSP) + JSTL;
  • БД: MySQL 8.0 + JDBC;
  • Веб-сервер: Tomcat 9;
  • CSS: Bootstrap 4;
  • Тесты: JUnit 4.12;
  • Сборка: Maven;
  • VCS: Git.

Возможности

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

  • Форма регистрации пользователя;
  • Хранение и актуализация данных о пользователях в БД MySQL;
  • Аутентификация и авторизация пользователей;
  • Функция "Запомнить меня" при авторизации;
  • Верификация полей при регистрации / редактировании пользователей (проверка на уникальность, проверка надежности пароля, проверка имени пользователя на соответствие требованиям);
  • Реализация модели полномочий в соответствии с ролевой моделью;

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

  • Создание мероприятий (для привилегированных пользователей);
  • Поиск мероприятий по ключевым параметрам (даты, описание, статусы);
  • Просмотр карточки мероприятия и его параметров (что? где? когда?);
  • Возможность работы в разных таймзонах;
  • Регистрация в мероприятии для участия и отказ от участия;
  • Формирование списков участников;
  • Просмотр своих мероприятий (как участник и/или как организатор);
  • Система статусов для мероприятий (Панируется, Запланировано, Отменено) и связанные ограничения на регистрацию в мероприятиях;
  • Возможность открывать и закрывать регистрацию на мероприятие.

Ролевая модель

Роли "Менеджер" и "Пользователь", базовые привилегии (досутпны всем не заблокированным пользователям):

  • смотреть общие страницы сайта;
  • смотреть / редактировать данные о себе (кроме ключевых полей: username, tel, e-mail);
  • изменять свой пароль;
  • удалять своего пользователя;
  • искать мероприятия (по датам, по автору, по статусу, по текстовым полям);
  • регистрироваться для участия в мероприятии (или отказываться от участия);
  • смотреть список мероприятий, в которых пользователь участвует;

Роль "Администратор", дополнительные привилегии к базовым:

  • смотреть список других пользователей;
  • смотреть персональные данные любого пользователя;
  • редактировать не ключевые поля любого пользователя;
  • менять права доступа другим пользователям в рамках ролей;
  • создавать мероприятия;

Роль "Суперпользователь", дополнительные привилегии к админским:

  • смотреть список других пользователей;
  • смотреть / корректировать любые персональные данные любого пользователя (все поля);
  • изменять / сбрасывать (на дефолтное значение) пароль любого пользователя;
  • менять права доступа другим пользователям в рамках ролей;
  • удалять любого пользователя;

Роль "Заблокирован":

  • привилегий нет;
  • не может входить в систему и пользоваться сайтом.

Структура

src/main/java

  • com.mycompany.makeanev2.User класс для манипуляциями с пользователями
  • com.mycompany.makeanev2.UserGroup класс для манипуляциями с группами полномочий
  • com.mycompany.makeanev2.Event класс для работы с мероприятиями
  • com.mycompany.makeanev2.EventStatus класс для работы со статусами мероприятия (Планируется, Запланировано, Отменено)
  • com.mycompany.makeanev2.EventRegStatus класс для работы со статусами регистрации (Открыта, Закрыта)
  • com.mycompany.makeanev2.Participant класс для манипуляции с участниками мероприятия
  • com.mycompany.makeanev2.ParticipantStatus класс для работы со статусами участников (Основной, Запасной)
  • com.mycompany.makeanev2.WeekOfMonth вспомогательный класс для формирования календаря на месяц из объектов LocalDate (используется для календарня на главной странице)
  • com.mycompany.makeanev2.Exceptions пакет с классами для обработки собственных исключений приложения (UserException, EventException, ParticipantException, SearchException);
  • com.mycompany.makeanev2.Filters.User пакет с классами Servlet-фильтров, выполняющих необходимые проверки на наличие полномочий для доступа к отдельным веб-страницам, а также управляет выдачей веб-страниц в зависимости от полномочий пользователей
  • com.mycompany.makeanev2.Filters.Event пакет с классами Servlet-фильтров, реализующих диспетчеризацию вызовов веб-страниц в зависимости от роли пользователя
  • com.mycompany.makeanev2.Servlets.User классы сервлетов, формирующие данные о пользователях и передающие их на веб-страницы;
  • com.mycompany.makeanev2.Servlets.Event классы сервлетов, формирующие данные о мероприятиях и передающие их на веб-страницы;
  • com.mycompany.makeanev2.MakeAnEv2ContextListener класс с контекстом приложения (используется для определения таймзоны для приложения)
  • com.mycompany.makeanev2.Utils классы вспомогательных утилит для работы с базой данных (соединение + запросы к БД), классы для проверки полномочий на доступ (CheckPermission), для работы с http-сессиями и пользователями при реализации механизма авторизации (AuthUtil), для работы с внутренним календарем (CalendarUtils).

src/test/java

  • com.mycompany.makeanev2 тесты классов с бизнес-логикой (User, UserGroup, Event, EventRegStatus, EventStatus, Participant, ParticipantStatus, WeekOfMonth);
  • com.mycompany.makeanev2.Exceptions тесты для классов внутренних исключений приложения (UserException);
  • com.mycompany.makeanev2.Utils тесты механизма проверки полномочий и календаря (CheckPermission, CalendarUtils);

src/main/webapp/ (View)

  • WEB-INF общие веб-страницы для всех пользователей (регистрация, редактирование пароля, страница результата действия, главная, подменю для поиска, модули подключения CSS и JS);
  • WEB-INF/adminview веб-страницы для Администратора
  • WEB-INF/managerview веб-страницы для Менеджера
  • WEB-INF/ownerview веб-страницы для Суперпользователя
  • WEB-INF/userview веб-страницы для Пользователя

База данных

database_schema

Скрипт

Тесты

Покрытие бизнес-логики >80% tests

Скриншоты

Главная

main_page

Логин

login_page

Профиль

card_page

Регистрация

register_page

Список пользователей

userlist_page

Редактирование профиля

edit_page

Создание мероприятия

createEvent_page

Просмотр мероприятия

event_page

Список мероприятий

eventList_page

Поиск мероприятия + календарь

searchformAndCalendar_pages

About

This is my Pet-project. Simple web-site for managment events with user auth system! I practice Java here. Look at screenshots in repo!

Resources

Stars

Watchers

Forks