diff --git a/README.md b/README.md
index c98ba9d..328bb03 100644
--- a/README.md
+++ b/README.md
@@ -8,8 +8,8 @@ of the original [PHP Dynamic Qr code](https://github.com/giandonatoinverso/PHP-D
project by Giandonato Inverso, built on [AdminLTE](https://adminlte.io/).
- **Try it free:** [qr.ensembia.com](https://qr.ensembia.com) - fully functional OSS test
- instance. Self-service signup isn't live yet, so log in with the temporary shared demo
- account `admin` / `admin` in the meantime.
+ instance. [Register your own free account](https://qr.ensembia.com/register.php)
+ (email + a self-hosted CAPTCHA, no third-party service) - no shared demo login needed.
- **Commercial VIP edition:** the ability to give sub-users the ability to create
QR codes as well, from their own (sub)account. If you have a bigger organisation,
having more users being able to create new QR codes delegates your workload. To
diff --git a/db/init.sql b/db/init.sql
index 0969941..44027ab 100644
--- a/db/init.sql
+++ b/db/init.sql
@@ -19,14 +19,20 @@ CREATE TABLE IF NOT EXISTS `users` (
`can_view_static` tinyint(1) NOT NULL DEFAULT 0,
`can_view_dynamic` tinyint(1) NOT NULL DEFAULT 0,
`owner_admin_id` int(25) DEFAULT NULL,
+ `email` varchar(255) DEFAULT NULL,
+ `must_set_email` tinyint(1) NOT NULL DEFAULT 0,
+ `self_registered_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
- UNIQUE KEY `username` (`username`)
+ UNIQUE KEY `username` (`username`),
+ UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
-- Default super admin account. Credentials: superadmin / superadmin
-- must_change_password=1 forces a password change on first login (see Fase 1 hardening).
-INSERT INTO `users` (`id`, `username`, `password`, `series_id`, `remember_token`, `expires`, `type`, `must_change_password`, `password_changed_at`) VALUES
-(1, 'superadmin', '$2y$10$xpZc5KC.aU2XHkcqhuZGFuAnqmtL4Unt8MysOyylceq.19XIyoZpG', NULL, NULL, NULL, 'super', 1, NULL);
+-- must_set_email=1: no email yet, so login falls back to username until it's set (same
+-- one-time interstitial pre-migration accounts get - see set_email.php).
+INSERT INTO `users` (`id`, `username`, `password`, `series_id`, `remember_token`, `expires`, `type`, `must_change_password`, `password_changed_at`, `must_set_email`) VALUES
+(1, 'superadmin', '$2y$10$xpZc5KC.aU2XHkcqhuZGFuAnqmtL4Unt8MysOyylceq.19XIyoZpG', NULL, NULL, NULL, 'super', 1, NULL, 1);
CREATE TABLE IF NOT EXISTS `dynamic_qrcodes` (
`id` int(10) NOT NULL AUTO_INCREMENT,
diff --git a/src/about.php b/src/about.php
index 9e4f0c5..75861f9 100644
--- a/src/about.php
+++ b/src/about.php
@@ -51,8 +51,9 @@ require_once BASE_PATH . '/includes/auth_validate.php';
This is the free, open-source (MIT) edition of QRForge. It runs unmodified
as a live, fully functional try-out at
qr.ensembia.com -
- self-service signup isn't live yet, so log in with the temporary shared
- demo account admin / admin in the meantime.
+ register your
+ own free account there (email + a self-hosted CAPTCHA, no third-party
+ service).
The commercial VIP edition (paid create-rights and logo-embedded QR codes)