Replace random unrecoverable passwords with a confirmation-based flow:
admin approval generates a secure token and sends a ticket reply with a
confirmation link; the developer clicks the link, enters their SilverDESK
password, and all services (Mattermost, Mailcow, Gitea) are provisioned
with that password. Adds password sync endpoint for SilverDESK resets and
updates the post-signup success panel to redirect to SilverDESK login with
the username pre-populated.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix two bugs preventing developer applications from appearing in SilverDESK:
1. Application creation payload used wrong types - ticketId was parsed as
int (GetInt32) but SilverDESK expects a Guid string, and appliedRole
was cast to int but the DTO expects "Tester"/"Developer" strings.
2. Approval provisioning now updates the DeveloperApplication record in
SilverDESK after Mattermost/Mailcow provisioning, setting status to
Approved and the correct provisioning flags.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Users now pick a password and get a SilverDESK account immediately on
submit. The form includes debounced username availability checking,
password fields with validation, and a post-submit link to SilverDESK.
The approval flow no longer creates a SilverDESK user (already exists)
and only provisions Mattermost + Mailcow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add the Mailcow read/write API key so mailbox provisioning actually
authenticates. Also set password2 to match password as required by
the Mailcow API.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The CreateUserDto expects `fullName` and `password` but the payload
was sending `name` (wrong property name) and omitting password
entirely, causing 400 BadRequest validation errors.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change approve endpoint from int to string ticketId to match SilverDESK
GUIDs. Remove body parameter requirement so the endpoint works as a
webhook target. Add DeveloperTicketParsingService to fetch and parse
applicant details from ticket descriptions. Remove redundant ticket
status update from ProvisioningService since SilverDESK action engine
now handles SetStatus/AddNote/AddReply steps.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add developer application page with form submission that creates tickets
in SilverDESK. Includes provisioning service scaffolding for Mattermost,
Mailcow, and Gitea account creation. Fixes API key header casing
(X-API-Key) and ticket payload to match SilverDESK's CreateTicketDto
contract.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>