feat: per-round advancement selection, email preview, Docker/auth fixes
All checks were successful
Build and Push Docker Image / build (push) Successful in 9m42s

- Bulk notification dialog: per-round checkboxes (default none selected),
  selected count badge, "Preview Email" button with rendered iframe
- Backend: roundIds filter on sendBulkPassedNotifications, new
  previewAdvancementEmail query
- Docker: add external MinIO network so app container can reach MinIO
- File router: try/catch on getPresignedUrl with descriptive error
- Auth: custom NextAuth logger suppresses CredentialsSignin stack traces

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-04 14:31:01 +01:00
parent 267d26581d
commit af03c12ae5
5 changed files with 410 additions and 228 deletions

View File

@@ -15,6 +15,16 @@ const LOCKOUT_DURATION_MS = 15 * 60 * 1000 // 15 minutes
export const { handlers, auth, signIn, signOut } = NextAuth({
...authConfig,
logger: {
error(error) {
// CredentialsSignin is expected (wrong password, bots) — already logged to AuditLog with detail
if (error?.name === 'CredentialsSignin') return
console.error('[auth][error]', error)
},
warn(code) {
console.warn('[auth][warn]', code)
},
},
adapter: {
...PrismaAdapter(prisma),
async useVerificationToken({ identifier, token }: { identifier: string; token: string }) {