Commit Graph

20 Commits

Author SHA1 Message Date
Joel Wedemire
a32f6590f4 fix(ui): patch responsive and tailwind bugs 2026-04-09 10:40:23 -07:00
Joel Wedemire
5ac4a3e771 fix(ticketing): resolve 500 error on ticket creation
nextTicketNumber() was using count()+1 which collides when tickets
have been deleted. Now queries MAX number via SUBSTRING ordering so
the generated ticket number is always unique.
2026-04-09 09:30:50 -07:00
Joel Wedemire
54aff1ee1b feat(ticketing): implement mobile-responsive inbox UX 2026-04-09 08:44:29 -07:00
Joel Wedemire
f1d161793d Add email connections to ticketing settings 2026-04-08 22:01:50 -07:00
Joel Wedemire
24dae5837d Accept attachments on ticket create 2026-04-08 21:58:33 -07:00
Joel Wedemire
4f65724f90 Allow site admins into ticketing settings 2026-04-08 21:56:17 -07:00
Joel Wedemire
5ffb9f1eed Reset ticketing demo data before seeding 2026-04-08 21:34:30 -07:00
Joel Wedemire
28a18a9cad Move ticketing demo seeder into src 2026-04-08 21:10:30 -07:00
Joel Wedemire
5a695ce9ee Autoload ticketing seeders 2026-04-08 21:09:56 -07:00
Joel Wedemire
13cff98c67 Fix ticketing service provider 2026-04-08 21:04:53 -07:00
Joel Wedemire
990d1dbb1b Add ticketing demo seeder 2026-04-08 20:39:53 -07:00
Joel Wedemire
f2ca83d2a7 Add ticketing project settings 2026-04-08 20:05:47 -07:00
Joel Wedemire
3c65f9a4fd Improve ticketing settings 2026-04-08 19:48:32 -07:00
Joel Wedemire
f2b614abb7 fix: scope create form priorities to selected group; reset on group change 2026-04-08 19:06:38 -07:00
Joel Wedemire
652829ab90 fix: bootstrap blocker + 4 security bugs
- Bootstrap (critical): settings/create/index no longer 403 on fresh install.
  Site admins (admin/super_admin) can access settings when 0 groups exist.
  First group creation seeds default priorities (Low/Medium/High/Urgent).
  Index shows friendly first-run splash. Create shows warning + settings link.

- Internal notes leak (high): submitters can no longer receive is_internal
  messages via ticket show, index detail panel, or any Inertia prop.
  filterMessagesForRole() strips internal notes for non-agents.

- Arbitrary assignee (med/high): update() now validates assigned_to against
  actual agent-access users for the ticket's group server-side.

- Cross-group priority/project forgery (medium): store() and update() now
  verify priority_id and project_id belong to the ticket's own group (or
  are global for priorities).

- Foreign message_id on attachment upload (medium): message_id is now
  validated to belong to the current ticket, not just any message row.
2026-04-08 18:31:51 -07:00
Joel Wedemire
615c091f88 Build hybrid ticketing inbox 2026-04-08 17:46:38 -07:00
Joel Wedemire
aa6177cf62 fix: orWhereIn typo; broaden illuminate/support and inertia-laravel version constraints 2026-04-08 17:16:29 -07:00
Joel Wedemire
391699220f feat: full dashboard-ticketing scaffold with data model, controllers, Vue pages 2026-04-08 17:10:30 -07:00
Joel Wedemire
81d0d54f50 feat: initial dashboard-ticketing scaffold 2026-04-08 14:17:26 -07:00
Joel Wedemire
1448eb7cf4 initial commit 2026-04-08 14:12:03 -07:00