App User
The AppUser entity extends ASP.NET Core Identity's IdentityUser<int> with marketplace-specific fields. Users can be players (buyers), makers (sellers), or both.
Properties
| Property | Type | Description |
|---|---|---|
Id | int | Primary key |
CreatedAtUtc | DateTime | Registration date |
IsMaker | bool | Whether this user has completed maker onboarding |
MakerFullName | string? | Legal name for invoicing |
MakerBillingAddress | string? | Billing address for invoicing |
MakerEulaAcceptedAtUtc | DateTime? | When the maker EULA was accepted |
PreferredUiCulture | string? | UI language preference |
PreferredLocale | string? | Regional formatting preference |
PreferredCurrency | string | Display currency (default: EUR) |
CreditBalance | int | Current credit balance for platform services |
VatId | string? | VAT identification number |
BillingCompanyName | string? | Company name for VAT-exempt invoicing |
BillingCountryCode | string? | ISO country code |
SuspendedAtUtc | DateTime? | When the user was suspended |
SuspendedBy | string? | Who suspended the user |
SuspensionMessage | string? | Reason for suspension |
AccountDeletionRequestedAtUtc | DateTime? | When deletion was requested |
AccountDeletionScheduledAtUtc | DateTime? | When deletion will execute |
Computed Properties
| Property | Description |
|---|---|
IsSuspended | true if SuspendedAtUtc is set |
HasValidVat | true if VatId is present and non-empty |
Roles
Ludilol doesn't use ASP.NET Core roles. Instead:
- Player: Any registered user. Can browse, buy, review, and tag.
- Maker: A user with
IsMaker = true. Can create games, store pages, and receive payments. - Admin: Accesses the Backoffice app via Entra ID (separate auth flow).
Maker Onboarding
To become a maker, a user must:
- Navigate to
/account/maker - Accept the EULA
- Provide billing details (name, address)
Account Closure
Users can request account deletion, which is scheduled with a grace period. A background worker (AccountDeletionWorker) processes deletions.
Relationships
AppUser (1) ──── (N) Game
AppUser (1) ──── (N) StorePage
AppUser (1) ──── (N) PaymentDestination
AppUser (1) ──── (N) Order (as buyer)
AppUser (1) ──── (N) Order (as seller)
AppUser (1) ──── (N) GameReview
AppUser (1) ──── (N) GameFavorite
AppUser (1) ──── (N) GameTag
AppUser (1) ──── (N) Credit
AppUser (1) ──── (N) Invoice
AppUser (1) ──── (N) PersonalAccessToken