M3 Registrierung und Login-Grundlage ergänzen
- SaaS-Auth-Helper und PDO-Datenbankzugriff einführen - Registrierung, Login, Logout und Kontoansicht ergänzen - Auth-Migration, Flow-Check und Smoke-Abdeckung aktualisieren
This commit is contained in:
@@ -34,9 +34,6 @@ CREATE TABLE IF NOT EXISTS users (
|
||||
display_name VARCHAR(255) NOT NULL,
|
||||
password_hash VARCHAR(255) NULL,
|
||||
status VARCHAR(30) NOT NULL DEFAULT 'active',
|
||||
email_verified_at DATETIME NULL,
|
||||
mfa_enabled TINYINT(1) NOT NULL DEFAULT 0,
|
||||
disabled_at DATETIME NULL,
|
||||
last_login_at DATETIME NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
@@ -79,9 +76,7 @@ CREATE TABLE IF NOT EXISTS participants (
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uq_participants_tenant_legacy (tenant_id, legacy_mitarbeiter_id),
|
||||
UNIQUE KEY uq_participants_tenant_email_norm (tenant_id, email_norm),
|
||||
UNIQUE KEY uq_participants_tenant_user (tenant_id, user_id),
|
||||
KEY idx_participants_tenant_active_name (tenant_id, active, display_name),
|
||||
KEY idx_participants_tenant_paypal_name (tenant_id, paypal_name),
|
||||
KEY idx_participants_user (user_id),
|
||||
CONSTRAINT fk_participants_tenant
|
||||
FOREIGN KEY (tenant_id) REFERENCES tenants(id)
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
SET @schema_name = DATABASE();
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @schema_name
|
||||
AND TABLE_NAME = 'users'
|
||||
AND COLUMN_NAME = 'email_verified_at'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE users ADD COLUMN email_verified_at DATETIME NULL AFTER status'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @schema_name
|
||||
AND TABLE_NAME = 'users'
|
||||
AND COLUMN_NAME = 'mfa_enabled'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE users ADD COLUMN mfa_enabled TINYINT(1) NOT NULL DEFAULT 0 AFTER email_verified_at'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @schema_name
|
||||
AND TABLE_NAME = 'users'
|
||||
AND COLUMN_NAME = 'disabled_at'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE users ADD COLUMN disabled_at DATETIME NULL AFTER mfa_enabled'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = @schema_name
|
||||
AND TABLE_NAME = 'participants'
|
||||
AND INDEX_NAME = 'uq_participants_tenant_user'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE participants ADD UNIQUE KEY uq_participants_tenant_user (tenant_id, user_id)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = @schema_name
|
||||
AND TABLE_NAME = 'participants'
|
||||
AND INDEX_NAME = 'idx_participants_tenant_paypal_name'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE participants ADD KEY idx_participants_tenant_paypal_name (tenant_id, paypal_name)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
Reference in New Issue
Block a user