Add MFA tables to update script
authorTim Düsterhus <duesterhus@woltlab.com>
Tue, 10 Nov 2020 08:29:00 +0000 (09:29 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Mon, 16 Nov 2020 16:29:05 +0000 (17:29 +0100)
wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_db.php

index c60c70554d4b8c87b2fdf91248e4982fa0c2ec56..b81521451e4b2514ae1b3e8167143f4a58a0ac13 100644 (file)
@@ -1,8 +1,13 @@
 <?php
 use wcf\system\database\table\column\BigintDatabaseTableColumn;
 use wcf\system\database\table\column\BinaryDatabaseTableColumn;
+use wcf\system\database\table\column\DefaultFalseBooleanDatabaseTableColumn;
+use wcf\system\database\table\column\IntDatabaseTableColumn;
 use wcf\system\database\table\column\NotNullInt10DatabaseTableColumn;
+use wcf\system\database\table\column\NotNullVarchar255DatabaseTableColumn;
+use wcf\system\database\table\column\ObjectIdDatabaseTableColumn;
 use wcf\system\database\table\column\TextDatabaseTableColumn;
+use wcf\system\database\table\column\VarbinaryDatabaseTableColumn;
 use wcf\system\database\table\DatabaseTable;
 use wcf\system\database\table\DatabaseTableChangeProcessor;
 use wcf\system\database\table\index\DatabaseTableIndex;
@@ -38,6 +43,61 @@ $tables = [
                        TextDatabaseTableColumn::create('metaKeywords')
                                ->drop()
                ]),
+       
+       PartialDatabaseTable::create('wcf1_user')
+               ->columns([
+                       DefaultFalseBooleanDatabaseTableColumn::create('multifactorActive'),
+               ]),
+       
+       DatabaseTable::create('wcf1_user_multifactor')
+               ->columns([
+                       ObjectIdDatabaseTableColumn::create('setupID'),
+                       NotNullInt10DatabaseTableColumn::create('userID'),
+                       NotNullInt10DatabaseTableColumn::create('objectTypeID'),
+               ])
+               ->indices([
+                       DatabaseTablePrimaryIndex::create()
+                               ->columns(['logID']),
+                       DatabaseTableIndex::create()
+                               ->type(DatabaseTableIndex::UNIQUE_TYPE)
+                               ->columns(['userID', 'objectTypeID']),
+               ]),
+       
+       DatabaseTable::create('wcf1_user_multifactor_backup')
+               ->columns([
+                       NotNullInt10DatabaseTableColumn::create('setupID'),
+                       NotNullVarchar255DatabaseTableColumn::create('identifier'),
+                       NotNullVarchar255DatabaseTableColumn::create('code'),
+                       NotNullInt10DatabaseTableColumn::create('createTime'),
+                       IntDatabaseTableColumn::create('useTime')
+                               ->length(10)
+                               ->defaultValue(null),
+               ])
+               ->indices([
+                       DatabaseTableIndex::create()
+                               ->type(DatabaseTableIndex::UNIQUE_TYPE)
+                               ->columns(['setupID', 'identifier']),
+               ]),
+       
+       DatabaseTable::create('wcf1_user_multifactor_totp')
+               ->columns([
+                       NotNullInt10DatabaseTableColumn::create('setupID'),
+                       NotNullVarchar255DatabaseTableColumn::create('deviceID'),
+                       NotNullVarchar255DatabaseTableColumn::create('deviceName'),
+                       VarbinaryDatabaseTableColumn::create('secret')
+                               ->notNull()
+                               ->length(255),
+                       NotNullInt10DatabaseTableColumn::create('minCounter'),
+                       NotNullInt10DatabaseTableColumn::create('createTime'),
+                       IntDatabaseTableColumn::create('createTime')
+                               ->length(10)
+                               ->defaultValue(null),
+               ])
+               ->indices([
+                       DatabaseTableIndex::create()
+                               ->type(DatabaseTableIndex::UNIQUE_TYPE)
+                               ->columns(['setupID', 'deviceID']),
+               ]),
 ];
 
 (new DatabaseTableChangeProcessor(