web-dev/labs/lab-4/app/templates/index.html
2026-02-25 13:42:55 +03:00

47 lines
11 KiB
HTML
Raw Permalink 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">Задание к лабораторной работе №4</h1>
<p class="task-description">Разработайте веб-приложение с использованием фреймворка Flask. Приложение должно предоставлять функциональность управления учётными записями пользователей, а именно: создание новых записей, просмотр, редактирование и удаление.</p>
<p class="task-description mt-3">Учётная запись пользователя характеризуется идентификатором, логином, значением хэш-функции пароля, фамилией, именем, отчеством, идентификатором роли пользователя и датой создания записи. Дата создания должна устанавливаться автоматически. У пользователя может отсутствовать фамилия или роль. Роль характеризуется идентификатором, названием и описанием.</p>
<p class="task-description mt-3">В приложении должна быть реализована функциональность аутентификации (можно взять из лаб. №3). Загрузка данных пользователя при аутентификации должна осуществляться из базы данных.</p>
<p class="task-description mt-3">Главная страница приложения должна отображать список пользователей в виде таблицы. Столбцы таблицы: порядковый номер пользователя, полное имя, название роли, действия. В столбце «действия» в каждой строке должны быть кнопки «Просмотр», «Редактировать» и «Удалить». Кнопки «Редактировать» и «Удалить» должны отображаться только для аутентифицированных пользователей. Под таблицей должна быть кнопка «Создать пользователя», которая также должна отображаться только для аутентифицированных пользователей.</p>
<p class="fw-bold task-description mt-4">Просмотр записи</p>
<p class="task-description">При нажатии на кнопку «Просмотр» должна открываться страница с данными выбранного пользователя (идентификатор, логин, фамилия, имя, отчество, название роли). Данные должны отображаться в виде таблицы. Эта страница доступна всем пользователям.</p>
<p class="fw-bold task-description mt-4">Создание записи</p>
<p class="task-description">При нажатии на кнопку «Создать пользователя» должна открываться страница с формой для ввода данных нового пользователя. Если неаутентифицированный пользователь попытается зайти на эту страницу, он должен быть перенаправлен на страницу входа.</p>
<p class="task-description mt-2">Форма должна содержать поля для ввода логина, пароля, фамилии, имени, отчества и выбора роли (selector). Внизу формы должна быть кнопка «Сохранить», при нажатии на которую на сервер отправляется POST-запрос и данные записываются в базу данных. При возникновении ошибки в процессе обработки запроса пользователю должно быть показано сообщение об ошибке (flash-сообщение) и отображена страница с заполненной формой (чтобы пользователь мог исправить введённые данные). При успешном завершении операции пользователь должен быть перенаправлен на страницу со списком пользователей и показано сообщение об успешном завершении.</p>
<p class="fw-bold task-description mt-4">Редактирование записи</p>
<p class="task-description">При нажатии на кнопку «Редактировать» должна открываться страница с формой редактирования пользователя. Она должна быть автоматически заполнена данными редактируемого пользователя. Набор полей данной формы должен соответствовать форме создания пользователей за исключением полей «логин» и «пароль» — их не должно быть в форме редактирования. Также не должно быть дублирования шаблона формы, то есть форма должна быть реализована в виде макроса и использоваться как на странице создания, так и на странице редактирования пользователя. Доступ к функциональности редактирования имеют только аутентифицированные пользователи. Механизм обработки ошибок и вывода сообщений аналогичен функциональности создания.</p>
<p class="fw-bold task-description mt-4">Удаление записи</p>
<p class="task-description">При нажатии на кнопку «Удалить» должно открываться модальное окно с сообщением «Вы уверены, что хотите удалить пользователя {}?». Вместо {} должно быть подставлено полное имя удаляемого пользователя. В нижней части модального окна должны быть кнопки «Да» и «Нет». При нажатии кнопки «Да» на сервер отправляется POST-запрос, и в результате обработки выбранная учётная запись пользователя удаляется из базы данных. При возникновении ошибки в процессе обработки запроса пользователю должно быть показано сообщение. Доступ к функциональности удаления имеют только аутентифицированные пользователи. Механизм обработки ошибок и вывода сообщений аналогичен функциональности создания и редактирования.</p>
<p class="fw-bold task-description mt-4">Проверка данных, вводимых пользователем</p>
<p class="task-description">Помимо перехвата ошибок записи в базу данных, реализуйте предварительную проверку введённых пользователем данных на стороне сервера. Поля логин, пароль, фамилия и имя не могут быть пустыми. Логин должен состоять только из латинских букв и цифр и иметь длину не менее 5 символов. Пароль должен соответствовать следующим требованиям:</p>
<ul class="task-list mt-2">
<li>Не менее 8 символов</li>
<li>Не более 128 символов</li>
<li>Хотя бы одна заглавная и одна строчная буква</li>
<li>Только латинские или кириллические буквы</li>
<li>Хотя бы одна цифра</li>
<li>Только арабские цифры</li>
<li>Нет пробелов</li>
<li>Допустимые прочие символы: ~ ! ? @ # $ % ^ &amp; * _ - + ( ) [ ] { } &gt; &lt; / \ | " ' . , : ;</li>
</ul>
<p class="task-description mt-2">Если какое-либо из вышеперечисленных требований нарушено, необходимо выделить некорректно заполненные поля в форме (с помощью соответствующего класса) и отобразить текст ниже каждого такого поля с объяснением причины ошибки (например, «Поле не может быть пустым»).</p>
<p class="fw-bold task-description mt-4">Смена пароля</p>
<p class="task-description">Добавьте возможность смены пароля текущего пользователя. Разместите ссылку «Сменить пароль» в панели навигации. При переходе по этой ссылке пользователь должен попасть на страницу с формой, содержащей 3 поля: старый пароль, новый пароль, повтор нового пароля. При отправке данных формы на сервер необходимо проверить правильность введённого старого пароля, соответствие требованиям к новому паролю (см. предыдущий раздел) и совпадение полей «новый пароль» и «повтор нового пароля». При возникновении ошибок пользователю должно быть показано flash-сообщение и/или выделены соответствующие поля формы. В случае успешной смены пароля перенаправьте пользователя на главную страницу и покажите ему flash-сообщение об успешном завершении.</p>
</div>
</div>
{% endblock %}