feat(avatars): 27 готовых пресет-аватаров + UI выбора для всех ролей

- backend/uploads/avatars/preset_01..27.png — иллюстрированные персонажи
- POST /api/avatar/preset — мгновенная установка без модерации
- GET  /api/avatar/presets — список доступных пресетов
- profile.html: галерея пресетов в модалке аватара, доступна студенту/учителю/админу
- кастомная загрузка с модерацией остаётся только для студентов
This commit is contained in:
Maxim Dolgolyov
2026-05-29 14:30:24 +03:00
parent 717ad3d0f5
commit 19ce8728e5
30 changed files with 175 additions and 22 deletions
+4
View File
@@ -32,6 +32,10 @@ router.post('/request', authMiddleware, upload.single('avatar'), ctrl.requestA
router.get('/my-status', authMiddleware, ctrl.myStatus);
router.delete('/me', authMiddleware, ctrl.removeAvatar);
/* ── preset avatars (available to all roles, no moderation) ─────────────── */
router.get('/presets', authMiddleware, ctrl.listPresets);
router.post('/preset', authMiddleware, ctrl.setPreset);
/* ── moderator routes (teacher or admin) ────────────────────────────────── */
router.get('/pending', authMiddleware, requireRole('teacher', 'admin'), ctrl.getPending);
router.post('/:id/approve', authMiddleware, requireRole('teacher', 'admin'), ctrl.approveAvatar);