web-dev/labs/lab-5/app/templates/index.html
2026-02-25 14:44:41 +03:00

65 lines
7.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends 'base.html' %}
{% block content %}
<div class="row my-4">
<div class="col-lg-12">
<h1 class="mb-4">Задание к лабораторной работе №5</h1>
<p class="task-description">Доработайте веб-приложение, разработанное в рамках ЛР4 "Реализация CRUD-интерфейса". Добавьте к нему функциональность авторизации пользователей и формирования статистических отчётов.</p>
<p class="fw-bold task-description mt-4">Авторизация пользователей</p>
<p class="task-description">Добавьте в приложение авторизацию пользователей, то есть проверку прав пользователей на совершение определённых действий и ограничение доступа к функциональности, для доступа к которой у пользователя нет прав. Права пользователей должны быть привязаны к их ролям.</p>
<p class="task-description mt-3">У пользователей с ролью "Администратор" есть право на:</p>
<ul class="task-list mt-2">
<li>создание пользователей,</li>
<li>редактирование пользователей,</li>
<li>просмотр профиля пользователя,</li>
<li>удаление пользователей,</li>
<li>просмотр журнала посещений (всех страниц).</li>
</ul>
<p class="task-description mt-3">У пользователей с ролью "Пользователь" есть право на:</p>
<ul class="task-list mt-2">
<li>редактирование своих данных (за исключением роли — это поле должно быть отключено на форме для редактирования),</li>
<li>просмотр своего профиля,</li>
<li>просмотр журнала посещений (только страницу "Журнал посещений", где не должны отображаться записи, соответствующие другим пользователям).</li>
</ul>
<p class="task-description mt-3">Реализация проверки прав должна быть реализована при помощи декоратора <code>check_rights</code>, который можно применить к view function. В случае, если у пользователя оказалось недостаточно прав для выполнения запрашиваемого действия, его нужно перенаправить на главную страницу с сообщением "У вас недостаточно прав для доступа к данной странице.".</p>
<p class="task-description mt-3">Пользователю не должны отображаться кнопки, соответствующие действиям, для выполнения которых у него недостаточно прав.</p>
<p class="fw-bold task-description mt-4">Формирование статистических отчётов</p>
<p class="task-description">Добавьте в разрабатываемое приложение "Журнал посещений", в котором разместите информацию посещении пользователями различных страниц сайта. Для этого создайте таблицу <code>visit_logs</code> со следующими полями:</p>
<ul class="task-list mt-2">
<li><code>id INT</code> — идентификатор записи,</li>
<li><code>path VARCHAR(100)</code> — путь до страницы,</li>
<li><code>user_id INT</code> — идентификатор пользователя (если пользователь не вошёл в систему — можно оставить пустым),</li>
<li><code>created_at</code> — дата посещения (проставляется автоматически).</li>
</ul>
<p class="task-description mt-3">Для автоматического заполнения данной таблицы рекомендуется использовать декоратор <code>before_request</code>.</p>
<p class="task-description mt-3">Функциональность формирования отчётов необходимо вынести в отдельный модуль и подключать к приложению при помощи Blueprint'а.</p>
<p class="task-description mt-3">На главной странице журнала посещений нужно отобразить записи таблицы <code>visit_logs</code>, отсортированные по убыванию даты. На этой странице должна быть табличка с колонками:</p>
<ul class="task-list mt-2">
<li>№ — порядковый номер записи,</li>
<li>Пользователь — ФИО пользователя (если нет пользователя — строка "Неаутентифицированный пользователь"),</li>
<li>Страница — путь до страницы,</li>
<li>Дата — дата посещения в формате 01.01.2001 01:01:01.</li>
</ul>
<p class="task-description mt-3">Должна быть предусмотрена пагинация записей.</p>
<p class="task-description mt-3">На главной странице журнала посещений должны быть расположены ссылки на страницы с отчётами по посещениям по страницам и по пользователям.</p>
<p class="task-description mt-3">На странице с отчётом по страницам должна быть таблица, отображающая статистику посещения страниц сайта. В ней должны быть колонки "№", "Страница" и "Количество посещений". Данные должны быть отсортированы в убывающем порядке количества посещений.</p>
<p class="task-description mt-3">Под таблицей должна располагаться кнопка "Экспорт в CVS", по нажатию на которую должен скачиваться файл с содержимым отчёта в формате CSV.</p>
<p class="task-description mt-3">Аналогичным образом нужно реализовать формирования отчёта по пользователям. Только в данном случае в таблице будут колонки "№", "Пользователь" (ФИО или "Неаутентифицированный пользователь"), "Количество посещений".</p>
</div>
</div>
{% endblock %}