- ✅ Introduce `getSignedMediaUrl` in models for temporary signed URLs
- 🗂️ Migrate media collections to private disk for added security
- 🔧 Add `media:move-to-private` command to streamline migration
- ⚙️ Update views and components to use signed media URLs
- ✏️ Adjust route `media.signed` for signed file access handling
- Added a new console command `nostr:profile` which fetches a Nostr profile given a public key.
- Updated the election admin view to fetch the profile if it doesn't exist in the database.
- Introduced a new state variable `isAllowed` to handle authorization in the election admin view.
- Redirect users with no admin access to the association profile page.