Commit Graph

3 Commits

Author SHA1 Message Date
Dev Server d5ebd2898a feat: invite by link, 8-char code input, universal_code in profile
Backend:
- New InvitationLink model: token, mentor, created_at, used_by, is_banned
- Links expire after 12h, single-use, multiple active links allowed
- generate-invitation-link: creates InvitationLink (doesn't overwrite old)
- info-by-token: validates expiry/usage/ban before returning mentor info
- register-by-link: validates InvitationLink, marks used_by on registration
- Migration 0013_invitation_link_model

Frontend:
- Profile: show user's universal_code with copy button
- InviteDialog: 8 separate input boxes for code (auto-focus, paste support)
- InviteDialog: new "По ссылке" tab — generate link, copy, show expiry
- /invite/:token page: public registration page with mentor info preview
- Auto-login after invite link registration (setSession + checkUserSession)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 17:11:12 +03:00
Dev Server f6caa7df6b feat: role-based UI for student/parent, child selector, timezone fix
- Role-based nav: hide payment/referrals for students, board/progress-children for parents
- Add "Мои группы" to student nav; groups detail page read-only for non-mentors
- Logout button in sidebar nav (signOut + redirect to login)
- Parent: auto-select first child, ChildSelector in nav above profile
- Children fetched from /parent/dashboard/ (not the broken /users/parents/children/)
- Add child by 8-char universal code with role validation (client only)
- Removed "Прогресс" button from child cards in children-view
- Fix redirect on child switch — stay on current page (no router.push)
- Parent child notification settings in profile (per-child + per-type toggles)
- Fix scroll on all pages: Main overflow auto, hasSidebar Box overflow auto
- Fix 403: isMentor guard before getStudents() calls in groups pages
- Fix timezone: FullCalendar timeZone prop + fTime() use user.timezone

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 16:45:15 +03:00
Dev Server f679f0c0f4 feat: board list view, excalidraw basePath fix, analytics, feedback pages
- Board: replace blank iframe with board list (my_boards + shared_with_me),
  mentor gets per-student buttons to open/create boards,
  iframe fills full available height via CSS vars (dvh)
- Excalidraw: build with NEXT_PUBLIC_BASE_PATH=/devboard so _next/ assets
  served under /devboard/_next/ and nginx path proxy works correctly
- Nginx: preserve /devboard/ path in proxy_pass (no trailing slash),
  add /yjs WebSocket proxy to devapi.uchill.online for dev YJS on port 1235
- Analytics: real API charts (income/lessons/students) with DateRangePicker
- Feedback: mentor kanban view of completed lessons, grade + notes drawer
- Nav: dynamic role-based menu (getNavData(role)), mentor-only analytics/feedback
- New API utils: analytics-api.js, board-api.js (full), dashboard-api getLessons()
- Routes: paths.dashboard.analytics, feedback, board added

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 16:35:30 +03:00