# Автопрокат: Windows Forms приложение и защита БД Проект реализует настольное приложение на C# Windows Forms для предметной области «Автопрокат». ## Запуск ```powershell dotnet run ``` Приложение подключается к PostgreSQL через файл `dbsettings.json`. Сейчас оно настроено на учебный сервер `edu-pg.itiscaf.ru`, базу `dbwork`, схему `garanin_gi`. Строку подключения также можно передать через переменную окружения `AUTORENT_CONNECTION_STRING`. Пользователь для входа: | Логин | Пароль | Роль | Обязанности | |---|---|---|---| | `garanin_gi` | пароль от PostgreSQL | Администратор | Полный доступ к данным, отчетам и журналу аудита | | `manager` | `Manager123!` | Менеджер | Ввод и редактирование рабочих данных, формирование отчетов | | `shagavaliev_iv` | пароль viewer-пользователя | Аналитик | Просмотр данных и отчетов без права изменения | ## Реализованные функции - ввод, поиск, редактирование и удаление клиентов; - ввод, поиск, редактирование и удаление автомобилей; - управление справочником марок, доступно администратору; - оформление и сопровождение договоров аренды; - CSV-экспорт текущих таблиц; - формирование отчетных документов в `HTML` и `TXT`; - просмотр журнала операций. ## Защита на уровне приложения - авторизация по логину и паролю; - пароли хранятся не в открытом виде, а как `PBKDF2-SHA256` хеш с индивидуальной солью; - разграничение прав по ролям `admin`, `manager`, `viewer`; - запрет операций изменения для аналитика; - параметризованные запросы к БД; - пользовательские сообщения об ошибках целостности без раскрытия лишних внутренних деталей. ## Защита на уровне БД В локальной демонстрационной БД реализованы: - первичные и внешние ключи; - ограничения `UNIQUE` для госномеров, телефонов, водительских удостоверений и названий марок; - ограничения `CHECK` для статусов, года выпуска, цены и дат аренды; - `ON DELETE RESTRICT` для защиты связанных данных; - представления `v_rentals_full`, `v_available_cars`, `v_client_stats`; - триггеры аудита `INSERT`, `UPDATE`, `DELETE` для таблиц `brand`, `car`, `client`, `rental`; - журнал `audit_log`. Файл [database_security_postgresql.sql](database_security_postgresql.sql) содержит вариант DDL для PostgreSQL с ролями БД, правами доступа, Row Level Security и триггерами логирования.