mirror of
https://github.com/claunia/marechai.git
synced 2026-07-08 17:57:08 +00:00
Implement a new feature where users receive 5 invitation codes when they confirm their email.
Backend changes:
- Extend InvitationCodeGenerator with GenerateForOwnerAsync() for batch code creation
- Mint 5 codes on email confirmation (not registration) in AuthController.ConfirmEmailAsync
- Add GET /invitation-codes/mine (self-service) endpoint for users to view their own codes
- Add POST /users/{id}/invitation-codes (admin-only) endpoint to grant additional codes
- Create MyInvitationCodeDto and GrantInvitationCodesRequest DTOs
Frontend changes:
- Add "My Invitation Codes" tab to Profile.razor with list of user's codes
- Unused codes rendered normally with copy-to-clipboard button
- Used codes shown with strikethrough (no user identity revealed)
- Add "Give Invitation Codes" action to admin Users page
- Dialog prompts for count (1-50) of codes to grant to selected user
- Success/error messages displayed after granting
- Extend InvitationCodesService.GetMyAsync() and UsersService.GrantInvitationCodesAsync()
- Regenerate Kiota API client from updated OpenAPI schema
No database schema changes required - existing InvitationCode fields accommodate both
registration-issued and admin-granted codes.
34 lines
1.3 KiB
JSON
34 lines
1.3 KiB
JSON
{
|
|
"descriptionHash": "A88EB48B54E94488C4D344ADBB16029566E71C3B603604B7A2F91B8705E8B1E5E8218E2011C3875C7649E176D644CF079C91CFDA713572F6C0B897891334950C",
|
|
"descriptionLocation": "../../../../../tmp/marechai-openapi.json",
|
|
"lockFileVersion": "1.0.0",
|
|
"kiotaVersion": "1.31.1",
|
|
"clientClassName": "Client",
|
|
"typeAccessModifier": "Public",
|
|
"clientNamespaceName": "Marechai.ApiClient",
|
|
"language": "CSharp",
|
|
"usesBackingStore": false,
|
|
"excludeBackwardCompatible": false,
|
|
"includeAdditionalData": true,
|
|
"disableSSLValidation": false,
|
|
"serializers": [
|
|
"Microsoft.Kiota.Serialization.Json.JsonSerializationWriterFactory",
|
|
"Microsoft.Kiota.Serialization.Text.TextSerializationWriterFactory",
|
|
"Microsoft.Kiota.Serialization.Form.FormSerializationWriterFactory",
|
|
"Microsoft.Kiota.Serialization.Multipart.MultipartSerializationWriterFactory"
|
|
],
|
|
"deserializers": [
|
|
"Microsoft.Kiota.Serialization.Json.JsonParseNodeFactory",
|
|
"Microsoft.Kiota.Serialization.Text.TextParseNodeFactory",
|
|
"Microsoft.Kiota.Serialization.Form.FormParseNodeFactory"
|
|
],
|
|
"structuredMimeTypes": [
|
|
"application/json",
|
|
"text/plain;q=0.9",
|
|
"application/x-www-form-urlencoded;q=0.2",
|
|
"multipart/form-data;q=0.1"
|
|
],
|
|
"includePatterns": [],
|
|
"excludePatterns": [],
|
|
"disabledValidationRules": []
|
|
} |