Безопасность - boomchik93/TerraBazar GitHub Wiki

  • Проверка прав администратора: Маршруты административной панели помечены декоратором @admin_required (основанным на функции is_admin). Это гарантирует, что только администратор (например, пользователь с ролью admin) может выполнять операции создания/удаления товаров и промокодов. Если проверка не пройдена, возвращается перенаправление на страницу логина или ошибка 403.

  • Аутентификация пользователей: Маршруты, доступные только авторизованным пользователям (например, просмотр корзины, оформление заказа, история заказов), проверяют наличие активной сессии пользователя. Если пользователь не залогинен, его перенаправляют на страницу входа. Это реализуется либо вручную внутри маршрутов, либо через декоратор @login_required (если используется Flask-Login).

  • Валидация данных: В формах регистрации и оформления заказа используется проверка корректности введённых данных. Например, функция format_phone_number вместе с regex_match проверяют, что телефон состоит только из допустимых символов и имеет правильный формат (с учётом кода страны). Если данные не проходят валидацию, в ответ возвращается сообщение об ошибке (через flash или JSON). Аналогично может валидироваться email, пароль (на длину и сложность) и другие поля.

  • Ограничения промокодов: При применении промокодов учитывается срок действия (expires_at) и максимальное число использований (usage_limit). Функция validate_promo проверяет, не превышен ли лимит, и не закончился ли срок. Также может учитываться, использовал ли уже пользователь этот промокод (чтобы нельзя было применять один и тот же промокод несколько раз). Если какие-то ограничения нарушены, промокод считается недействительным.

  • Обработка ошибок: В маршрутах предусмотрены блоки try/except или проверки условий, чтобы при возникновении исключений или ошибок логики возвращать корректный ответ (сообщение об ошибке) вместо аварийного завершения. Например, если товара с указанным id не существует, маршрут может вернуть 404 или сообщение об ошибке.