Darko Gjorgjijoski
92a1baced4
Add company invitation system (backend)
New feature allowing company owners/admins to invite users by email with
a specific company-scoped role.
Database:
- New company_invitations table (company_id, email, role_id, token,
status, invited_by, expires_at)
Backend:
- CompanyInvitation model with pending/forUser scopes
- InvitationService: invite, accept, decline, getPendingForUser
- CompanyInvitationMail with markdown email template
- InvitationController (company-scoped): list, send, cancel invitations
- InvitationResponseController (user-scoped): pending, accept, decline
- BootstrapController returns pending_invitations in response
- CompanyMiddleware handles zero-company users gracefully
Tests: 9 feature tests covering invite, accept, decline, cancel, expire,
duplicate prevention, and bootstrap integration.
2026-04-03 22:58:55 +02:00
..
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2025-01-12 18:37:08 +01:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2026-03-21 18:59:53 +01:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2025-01-12 18:37:08 +01:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2026-03-21 18:59:53 +01:00
2024-02-17 23:51:21 +02:00
2024-04-20 23:08:32 +02:00
2026-03-21 18:59:53 +01:00
2024-06-05 11:33:52 +02:00
2024-06-05 11:33:52 +02:00
2024-07-28 23:14:34 +02:00
2024-07-28 22:46:45 +02:00
2024-07-28 22:46:45 +02:00
2024-07-17 12:06:04 +02:00
2024-07-17 12:06:04 +02:00
2025-01-12 13:32:47 +01:00
2024-10-04 12:07:29 +02:00
2024-11-02 12:20:55 +01:00
2025-05-04 02:24:56 +02:00
2025-04-05 12:01:06 +02:00
2025-04-05 00:43:34 +02:00
2025-08-28 10:28:24 +02:00
2025-08-28 10:28:24 +02:00
2025-08-28 10:28:24 +02:00
2025-08-28 14:13:03 +02:00
2025-09-02 03:20:27 +02:00
2026-01-01 17:50:31 +01:00
2026-04-03 10:35:40 +02:00
2026-04-03 22:33:56 +02:00
2026-04-03 22:58:55 +02:00