aa3471efe1
handleSubmit required a password whenever requirePassword was true, but the password field only renders on the inline-email path (requirePassword && customerEmail). For a password-protected gallery with no inline email the field was hidden, so submit blocked on the missing password and the dialog never closed. Gate password collection + validation on a single `needsPassword` (requirePassword && customerEmail); the no-inline-email path publishes without re-entering the password (existing hash kept, customer reaches it via portal).