v4.1.21: Реструктуризация проекта для Synology ARM
- Реструктуризация: 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
This commit is contained in:
217
ACCESS_RIGHTS.md
Normal file
217
ACCESS_RIGHTS.md
Normal file
@@ -0,0 +1,217 @@
|
||||
# 🔐 ПРАВА ДОСТУПА - МАТРИЦЫ РАЗРЕШЕНИЙ
|
||||
|
||||
**Версия**: 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
|
||||
Reference in New Issue
Block a user