# UAV License Management System

Система управления разрешениями на полет беспилотных летательных аппаратов (БПЛА) с поддержкой ролей пользователей.

## Возможности

### Для администраторов:
- ✅ Создание, редактирование и удаление разрешений БПЛА
- ✅ Управление пользователями системы
- ✅ Создание новых учетных записей
- ✅ Назначение ролей (admin/user)
- ✅ Активация/деактивация пользователей
- ✅ Просмотр всех разрешений
- ✅ Редактирование и удаление любых разрешений

### Для обычных пользователей:
- ✅ Создание новых разрешений БПЛА
- ✅ Просмотр списка своих разрешений
- ✅ Редактирование своих собственных разрешений
- ✅ Удаление своих собственных разрешений
- ✅ Скачивание PDF документов
- ❌ Редактирование разрешений других пользователей
- ❌ Удаление разрешений других пользователей
- ❌ Управление пользователями

## Модель разрешений

### Принцип "Владелец может все"
- **Пользователи** могут полностью управлять формами, которые они создали
- **Администраторы** могут управлять всеми формами в системе
- **Безопасность** - пользователи не могут получить доступ к чужим данным

### Примеры разрешений:
- **Пользователь A** создает разрешение → может редактировать/удалять только его
- **Пользователь B** создает разрешение → может редактировать/удалять только его
- **Администратор** → может редактировать/удалять все разрешения

## Установка и настройка

### 1. База данных
Выполните SQL скрипт `sql/script.sql` для создания необходимых таблиц:

```sql
-- Создание базы данных и таблиц
mysql -u root -p < sql/script.sql
```

### 2. Настройка подключения к БД
Отредактируйте файл `includes/db.php` с вашими параметрами подключения:

```php
$host = '127.0.0.1';
$db   = 'uavlicense';
$user = 'root';
$pass = 'your_password';
```

### 3. Создание администратора
Запустите скрипт настройки для создания первого администратора:

```bash
php setup_admin.php
```

После успешного создания удалите файл `setup_admin.php` для безопасности.

### 4. Доступ к системе
- **URL**: `http://your-domain/pages/login.php`
- **Логин**: `admin`
- **Пароль**: `admin123`

## Структура базы данных

### Таблица `users`
- `id` - уникальный идентификатор
- `username` - имя пользователя (уникальное)
- `password` - хеш пароля
- `full_name` - полное имя
- `email` - email адрес
- `role` - роль (admin/user)
- `is_active` - статус активности
- `created_at` - дата создания
- `updated_at` - дата обновления

### Таблица `licenses`
- `id` - уникальный идентификатор
- `uniqid` - уникальный код разрешения
- `code` - номер п/п
- `organization` - организация
- `application_date` - дата подачи заявки
- `bpla_info` - информация о БПЛА
- `flight_start` - время начала полета
- `flight_end` - время окончания полета
- `region` - район выполнения полета
- `radius_zone` - зона радиуса
- `coordinates` - координаты
- `height_zone` - высота полета
- `job_type` - вид работы
- `operator` - оператор
- `phone_number` - номер телефона
- `application_number` - номер заявки
- `job_date` - дата выполнения работ
- `is_valid` - статус действительности
- `created_by` - ID пользователя, создавшего разрешение
- `created_at` - дата создания

## Безопасность

- Пароли хешируются с использованием `password_hash()`
- Роли пользователей проверяются на уровне сессий
- Доступ к административным функциям ограничен
- Пользователи могут управлять только своими данными
- SQL-инъекции предотвращены через подготовленные запросы
- XSS-атаки предотвращены через `htmlspecialchars()`

## Файлы системы

- `pages/login.php` - страница входа
- `pages/list.php` - список разрешений (с фильтрацией по роли)
- `pages/create.php` - создание разрешения
- `pages/edit.php` - редактирование разрешения (с проверкой владельца)
- `pages/delete.php` - удаление разрешения (с проверкой владельца)
- `pages/users.php` - управление пользователями (только админы)
- `pages/info.php` - просмотр информации о разрешении
- `pages/pdf.php` - генерация PDF документа
- `includes/db.php` - подключение к базе данных

## Создание новых пользователей

Администраторы могут создавать новых пользователей через страницу "Управление пользователями":

1. Войти как администратор
2. Перейти в "Управление пользователями"
3. Нажать "Создать пользователя"
4. Заполнить форму:
   - Имя пользователя (уникальное)
   - Пароль
   - Полное имя
   - Email (опционально)
   - Роль (admin/user)
   - Статус активности

## Изменение пароля

Для изменения пароля пользователя:
1. Войти как администратор
2. Перейти в "Управление пользователями"
3. Нажать на кнопку редактирования пользователя
4. Ввести новый пароль в поле "Пароль"

## Поддержка

При возникновении проблем:
1. Проверьте логи ошибок веб-сервера
2. Убедитесь в корректности настроек базы данных
3. Проверьте права доступа к файлам
4. Убедитесь, что PHP поддерживает необходимые расширения

## Требования

- PHP 7.4+
- MySQL 5.7+ или MariaDB 10.2+
- Веб-сервер (Apache/Nginx)
- Расширение PHP PDO
- Расширение PHP mbstring
