Refactor authentication and database code into Burrow.Auth project #74

Merged
Vylpes merged 104 commits from feature/17-story-11-user-sign-up into main 2026-03-01 19:22:14 +00:00
Owner

#12

#12
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Create base project: Blazor Server + PostgreSQL + EF Core + Tailwind + Bootstrap + Docker
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Allow ASPNETCORE_ENVIRONMENT to be configured via .env file
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Persist Data Protection keys to fix antiforgery token decryption on container restart
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Implement card-based layout with auth-aware navbar
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Implement auto migrations on startup
Only run dependent services in Docker
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Configure email sending: SMTP and file-based senders
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Fix logout crash: invalid redirect URL when ReturnUrl is "/"
Create src/Burrow/Burrow.Auth/ as a Razor Class Library containing:
- Authentication data models and DB context (ApplicationUser, ApplicationDbContext)
- EF Core migrations
- Email services (EmailSettings, FileEmailSender, SmtpEmailSender)
- All Blazor Account components (login, register, manage, etc.)
- CSS source and tailwind build configuration

Update Droplet.Web to reference Burrow.Auth via ProjectReference, register
components with AddAdditionalAssemblies(), and serve CSS from _content/Burrow.Auth/.

Add GlobalUsings.cs to Burrow.Auth to provide ASP.NET Core implicit usings
that were previously available via Microsoft.NET.Sdk.Web.

Make identity service classes public so they can be registered from Droplet.Web.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
EF Core migration files use fully-qualified type names as string literals for
entity discriminators. These needed updating to match the new namespace after
moving ApplicationUser to Burrow.Auth.Data.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Split auth and database code into Burrow.Auth project
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Add xUnit automated tests for Burrow.Auth and Droplet.Web
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
docs: add email provider and unit testing documentation, update README
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Remove HtmlDecode + manual quote replacement from href generation.
All callers already pass HtmlEncoder.Default.Encode(callbackUrl), so
decoding it was reintroducing unencoded & characters. Use the
already-encoded URL directly in the href attribute.

Add tests to verify HTML-encoded URLs are preserved verbatim.

Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Register authorization services in AddBurrowAuth
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Fix FileEmailSender file name collisions under concurrent sends
fix(a11y): replace non-focusable dismiss `<a>` with accessible `<button>` in MainLayout
Remove HtmlDecode from email sender href generation
Fix invalid HTML: separate "Back to Home" button from nav tabs in ManageNavMenu
Make DataProtection keys directory configurable
Fix README: yarn/CSS setup steps point to wrong directory
Remove unused AuthenticationStateProvider parameter from DownloadPersonalData endpoint
Give DropletDbContext and BurrowAuthDbContext separate migrations history tables
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Remove generated Tailwind CSS from source control
Remove hard-coded DB credentials from appsettings.json
This reverts commit 6c508e93a0.
Vylpes requested review from Copilot 2026-02-28 12:04:32 +00:00
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Vylpes <8274970+Vylpes@users.noreply.github.com>
Add SmtpEmailSender unit tests via BuildMailMessage refactor
Vylpes changed target branch from release/0.1.0 to main 2026-03-01 19:21:51 +00:00
Vylpes merged commit 57ee23944e into main 2026-03-01 19:22:14 +00:00
Vylpes deleted branch feature/17-story-11-user-sign-up 2026-03-01 19:22:14 +00:00
Sign in to join this conversation.
No description provided.