Add self-registration: free accounts via email + self-hosted CAPTCHA
New public register.php flow: email + a GD-rendered math CAPTCHA (no third-party service), a mailed temporary password doubling as email verification, forced password change on first login. Gated behind a new ALLOW_SELF_REGISTRATION toggle (default off). Login moves from username to email (falls back to username for pre-migration accounts without one yet, mirroring qr-vip's existing migration 006 pattern) - self-registration needs email as the identifier. New set_email.php interstitial for legacy accounts. Adds a small PHPMailer-based Mailer class (SMTP, with an unauthenticated-relay option via MAIL_SMTP_AUTH=false) since no mail infrastructure existed in this app before.
This commit is contained in:
@@ -15,6 +15,13 @@ services:
|
||||
DATABASE_PASSWORD: "${DATABASE_PASSWORD:?zet DATABASE_PASSWORD in .env}"
|
||||
DATABASE_PREFIX: "${DATABASE_PREFIX:-}"
|
||||
DATABASE_CHARSET: "${DATABASE_CHARSET:-utf8}"
|
||||
ALLOW_SELF_REGISTRATION: "${ALLOW_SELF_REGISTRATION:-false}"
|
||||
MAIL_HOST: "mailhog"
|
||||
MAIL_PORT: "1025"
|
||||
MAIL_ENCRYPTION: ""
|
||||
MAIL_SMTP_AUTH: "false"
|
||||
MAIL_FROM_ADDRESS: "${MAIL_FROM_ADDRESS:-noreply@example.com}"
|
||||
MAIL_FROM_NAME: "${MAIL_FROM_NAME:-QRForge}"
|
||||
ports:
|
||||
- "80:80"
|
||||
depends_on:
|
||||
@@ -25,6 +32,14 @@ services:
|
||||
networks:
|
||||
- qrforge-network
|
||||
|
||||
mailhog:
|
||||
image: "mailhog/mailhog:v1.0.1"
|
||||
restart: "unless-stopped"
|
||||
ports:
|
||||
- "8025:8025" # web UI: http://localhost:8025
|
||||
networks:
|
||||
- qrforge-network
|
||||
|
||||
qrforge-db:
|
||||
image: "mysql:8.0"
|
||||
restart: "unless-stopped"
|
||||
|
||||
Reference in New Issue
Block a user