- Реструктуризация: src/ разбит на middleware/, utils/, repositories/ (удалены), routes/ (удалены) - Добавлен src/original-html.ts — полный HTML с reportModal - Добавлен src/index.tsx.backup — React-компонент с reportModal - Миграции переименованы (0001_initial_schema.sql) - Добавлена миграция 0018 (удалена позже) - Docker: multi-stage build, wrangler.toml - Frontend: public/static/app.js + style.css - seed.sql добавлен - Документация: CHANGELOG, CHANGES_v4.1.0-4.1.9, PROJECT_STRUCTURE
218 lines
7.8 KiB
Markdown
218 lines
7.8 KiB
Markdown
# 🔐 ПРАВА ДОСТУПА - МАТРИЦЫ РАЗРЕШЕНИЙ
|
||
|
||
**Версия**: v4.1.17
|
||
**Дата**: 2026-01-14
|
||
**Обновление**: Уточнены права доступа User и Guest
|
||
|
||
---
|
||
|
||
## 🔐 МАТРИЦА ПРАВ ДОСТУПА - РЕДАКТИРОВАНИЕ
|
||
|
||
| Поле | Admin | User | Guest |
|
||
|------|-------|------|-------|
|
||
| **MAT-1** календарь | ✅ | ❌ | ❌ |
|
||
| **MAT-1** подтверждение | ✅ | ✅ | ❌ |
|
||
| **MAT-2** календарь | ✅ | ❌ | ❌ |
|
||
| **MAT-2** подтверждение | ✅ | ✅ | ❌ |
|
||
| **PAKETT** календарь | ✅ | ❌ | ❌ |
|
||
| **Töölehti** toggle | ✅ | ✅ | ❌ |
|
||
| **LÕIKUS** toggle | ✅ | ✅ | ❌ |
|
||
| **KLAAS** toggle | ✅ | ✅ | ❌ |
|
||
| **VALMIS** toggle | ✅* | ✅* | ❌ |
|
||
| **VÄLJAS** toggle | ✅* | ✅* | ❌ |
|
||
|
||
*Блокируется при наличии проблем/ошибок
|
||
|
||
---
|
||
|
||
## 👁️ МАТРИЦА ПРАВ ДОСТУПА - ПРОСМОТР
|
||
|
||
| Поле | Admin | User | Guest |
|
||
|------|-------|------|-------|
|
||
| **MAT-1** дата | ✅ | ✅ | ✅ |
|
||
| **MAT-1** кнопка ✓ | ✅ | ✅ | ❌ |
|
||
| **MAT-2** дата | ✅ | ✅ | ✅ |
|
||
| **MAT-2** кнопка ✓ | ✅ | ✅ | ❌ |
|
||
| **PAKETT** дата | ✅ | ✅ | ✅ |
|
||
| **Töölehti** дата+статус | ✅ | ✅ | ✅ |
|
||
| **LÕIKUS** дата | ✅ | ✅ | ✅ |
|
||
| **KLAAS** дата | ✅ | ✅ | ✅ |
|
||
| **VALMIS** дата | ✅ | ✅ | ✅ |
|
||
| **VÄLJAS** дата | ✅ | ✅ | ✅ |
|
||
|
||
---
|
||
|
||
## 👤 РОЛИ ПОЛЬЗОВАТЕЛЕЙ
|
||
|
||
### **Admin** (admin, aknaproff)
|
||
|
||
#### Редактирование:
|
||
- ✅ **MAT-1**: выбор даты через календарь
|
||
- ✅ **MAT-1**: подтверждение (кнопка ✓)
|
||
- ✅ **MAT-2**: выбор даты через календарь
|
||
- ✅ **MAT-2**: подтверждение (кнопка ✓)
|
||
- ✅ **PAKETT**: выбор даты через календарь
|
||
- ✅ **Töölehti**: полный контроль 3-шагового цикла
|
||
- ✅ **LÕIKUS**: toggle даты
|
||
- ✅ **KLAAS**: toggle даты
|
||
- ✅ **VALMIS**: toggle даты (если нет блокировки)
|
||
- ✅ **VÄLJAS**: toggle даты (если нет блокировки)
|
||
- ✅ Добавление записей
|
||
- ✅ Редактирование записей
|
||
- ✅ Удаление записей
|
||
- ✅ Изменение проблем и ошибок
|
||
|
||
#### Просмотр:
|
||
- ✅ Все поля видны полностью
|
||
|
||
---
|
||
|
||
### **User** (kasutaja)
|
||
|
||
#### Редактирование:
|
||
- ❌ **MAT-1**: НЕТ доступа к календарю
|
||
- ✅ **MAT-1**: ЕСТЬ доступ к подтверждению (кнопка ✓)
|
||
- ❌ **MAT-2**: НЕТ доступа к календарю
|
||
- ✅ **MAT-2**: ЕСТЬ доступ к подтверждению (кнопка ✓)
|
||
- ❌ **PAKETT**: нет доступа к календарю
|
||
- ✅ **Töölehti**: полный контроль 3-шагового цикла
|
||
- ✅ **LÕIKUS**: toggle даты
|
||
- ✅ **KLAAS**: toggle даты
|
||
- ✅ **VALMIS**: toggle даты (если нет блокировки)
|
||
- ✅ **VÄLJAS**: toggle даты (если нет блокировки)
|
||
- ❌ Добавление/редактирование/удаление записей
|
||
|
||
#### Просмотр:
|
||
- ✅ **MAT-1, MAT-2**: видит дату + кнопку подтверждения
|
||
- ✅ **PAKETT**: видит дату
|
||
- ✅ **Töölehti, LÕIKUS, KLAAS, VALMIS, VÄLJAS**: видит дату
|
||
|
||
---
|
||
|
||
### **Guest** (неавторизованный пользователь)
|
||
|
||
#### Редактирование:
|
||
- ❌ **Все поля**: нет доступа к редактированию
|
||
|
||
#### Просмотр:
|
||
- ✅ **MAT-1, MAT-2**: видит только дату (БЕЗ кнопки подтверждения)
|
||
- ✅ **PAKETT**: видит дату
|
||
- ✅ **Töölehti, LÕIKUS, KLAAS, VALMIS, VÄLJAS**: видит дату
|
||
|
||
---
|
||
|
||
## 📊 ДЕТАЛЬНОЕ ОПИСАНИЕ
|
||
|
||
### **MAT-1 (Material)**
|
||
- **Admin**: открывает календарь + подтверждает
|
||
- **User**: только подтверждает (кнопка ✓)
|
||
- **Guest**: только просмотр даты
|
||
|
||
### **MAT-2 (Material2)**
|
||
- **Admin**: открывает календарь + подтверждает
|
||
- **User**: только подтверждает (кнопка ✓)
|
||
- **Guest**: только просмотр даты
|
||
- **Блокировка**: если MAT-1 пустая
|
||
|
||
### **PAKETT (Package)**
|
||
- **Admin**: открывает календарь
|
||
- **User**: только просмотр
|
||
- **Guest**: только просмотр
|
||
|
||
### **Töölehti (Worksheets)**
|
||
- **Admin**: полный контроль 3-цикла
|
||
- **User**: полный контроль 3-цикла
|
||
- **Guest**: только просмотр
|
||
|
||
### **LÕIKUS (Cutting)**
|
||
- **Admin**: toggle (добавить/удалить дату)
|
||
- **User**: toggle (добавить/удалить дату)
|
||
- **Guest**: только просмотр
|
||
|
||
### **KLAAS (Glazing)**
|
||
- **Admin**: toggle (добавить/удалить дату)
|
||
- **User**: toggle (добавить/удалить дату)
|
||
- **Guest**: только просмотр
|
||
|
||
### **VALMIS (Ready)**
|
||
- **Admin**: toggle (если нет проблем/ошибок)
|
||
- **User**: toggle (если нет проблем/ошибок)
|
||
- **Guest**: только просмотр
|
||
- **Блокировка**: при наличии проблем или ошибок
|
||
|
||
### **VÄLJAS (Issued)**
|
||
- **Admin**: toggle (если нет проблем/ошибок)
|
||
- **User**: toggle (если нет проблем/ошибок)
|
||
- **Guest**: только просмотр
|
||
- **Блокировка**: при наличии проблем или ошибок
|
||
|
||
---
|
||
|
||
## 🔑 ТЕХНИЧЕСКИЕ ДЕТАЛИ
|
||
|
||
### **Backend проверка прав:**
|
||
```typescript
|
||
// optionalAuthMiddleware - разрешает Guest просмотр
|
||
// authMiddleware - требует авторизацию
|
||
|
||
// Календари (MAT-1, MAT-2, PAKETT)
|
||
if (userRole !== 'admin') {
|
||
return c.json({ error: 'Only admin can change dates' }, 403)
|
||
}
|
||
|
||
// Подтверждение (MAT-1, MAT-2)
|
||
// Разрешено всем авторизованным (Admin + User)
|
||
|
||
// Toggle (Töölehti, LÕIKUS, KLAAS, VALMIS, VÄLJAS)
|
||
// Разрешено всем авторизованным (Admin + User)
|
||
```
|
||
|
||
### **Frontend проверка прав:**
|
||
```javascript
|
||
// canEditRecords() - проверяет наличие токена и роль
|
||
// Для Admin + User = true
|
||
// Для Guest = false
|
||
|
||
// MAT-1/MAT-2 календарь
|
||
if (currentUser.role !== 'admin') {
|
||
// Скрыть календарь
|
||
}
|
||
|
||
// MAT-1/MAT-2 подтверждение
|
||
if (!token) {
|
||
// Скрыть кнопку ✓
|
||
}
|
||
|
||
// Toggle поля
|
||
if (!canEditRecords()) {
|
||
// Отключить клик
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ СВОДКА
|
||
|
||
### **Что может Admin:**
|
||
- 📅 Выбирать даты через календарь (MAT-1, MAT-2, PAKETT)
|
||
- ✓ Подтверждать материалы
|
||
- 🔄 Управлять всеми toggle-полями
|
||
- ➕ Добавлять/редактировать/удалять записи
|
||
|
||
### **Что может User:**
|
||
- ❌ НЕ может выбирать даты через календарь
|
||
- ✓ МОЖЕТ подтверждать материалы (MAT-1, MAT-2)
|
||
- 🔄 МОЖЕТ управлять toggle-полями (Töölehti, LÕIKUS, KLAAS, VALMIS, VÄLJAS)
|
||
- ❌ НЕ может добавлять/редактировать/удалять записи
|
||
|
||
### **Что может Guest:**
|
||
- 👁️ Только просмотр всех дат
|
||
- ❌ НЕ видит кнопки подтверждения
|
||
- ❌ НЕ может редактировать ничего
|
||
|
||
---
|
||
|
||
**Статус**: ✅ Права доступа корректны
|
||
**Версия**: v4.1.17
|
||
**Дата**: 2026-01-14
|