]>
Commit | Line | Data |
---|---|---|
a6b242a1 JB |
1 | <?php |
2 | ||
3 | namespace Application\Migrations; | |
4 | ||
5 | use Doctrine\DBAL\Schema\Schema; | |
6 | use Wallabag\CoreBundle\Doctrine\WallabagMigration; | |
7 | ||
8 | /** | |
842af5c3 | 9 | * Add 2fa OTP stuff. |
a6b242a1 JB |
10 | */ |
11 | final class Version20181202073750 extends WallabagMigration | |
12 | { | |
13 | public function up(Schema $schema): void | |
14 | { | |
dfd0a7bc JB |
15 | switch ($this->connection->getDatabasePlatform()->getName()) { |
16 | case 'sqlite': | |
842af5c3 JB |
17 | $this->addSql('DROP INDEX UNIQ_1D63E7E5C05FB297'); |
18 | $this->addSql('DROP INDEX UNIQ_1D63E7E5A0D96FBF'); | |
19 | $this->addSql('DROP INDEX UNIQ_1D63E7E592FC23A8'); | |
20 | $this->addSql('CREATE TEMPORARY TABLE __temp__' . $this->getTable('user', true) . ' AS SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication FROM ' . $this->getTable('user', true) . ''); | |
21 | $this->addSql('DROP TABLE ' . $this->getTable('user', true) . ''); | |
22 | $this->addSql('CREATE TABLE ' . $this->getTable('user', true) . ' (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, username VARCHAR(180) NOT NULL COLLATE BINARY, username_canonical VARCHAR(180) NOT NULL COLLATE BINARY, email VARCHAR(180) NOT NULL COLLATE BINARY, email_canonical VARCHAR(180) NOT NULL COLLATE BINARY, enabled BOOLEAN NOT NULL, password VARCHAR(255) NOT NULL COLLATE BINARY, last_login DATETIME DEFAULT NULL, password_requested_at DATETIME DEFAULT NULL, name CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, emailTwoFactor BOOLEAN NOT NULL, salt VARCHAR(255) DEFAULT NULL, confirmation_token VARCHAR(180) DEFAULT NULL, roles CLOB NOT NULL --(DC2Type:array) | |
23 | , googleAuthenticatorSecret VARCHAR(255) DEFAULT NULL, backupCodes CLOB DEFAULT NULL --(DC2Type:json_array) | |
24 | )'); | |
25 | $this->addSql('INSERT INTO ' . $this->getTable('user', true) . ' (id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, emailTwoFactor) SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication FROM __temp__' . $this->getTable('user', true) . ''); | |
26 | $this->addSql('DROP TABLE __temp__' . $this->getTable('user', true) . ''); | |
27 | $this->addSql('CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON ' . $this->getTable('user', true) . ' (confirmation_token)'); | |
28 | $this->addSql('CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON ' . $this->getTable('user', true) . ' (email_canonical)'); | |
29 | $this->addSql('CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON ' . $this->getTable('user', true) . ' (username_canonical)'); | |
dfd0a7bc JB |
30 | break; |
31 | case 'mysql': | |
842af5c3 JB |
32 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' ADD googleAuthenticatorSecret VARCHAR(191) DEFAULT NULL'); |
33 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' CHANGE twoFactorAuthentication emailTwoFactor BOOLEAN NOT NULL'); | |
34 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' DROP trusted'); | |
35 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' ADD backupCodes LONGTEXT DEFAULT NULL COMMENT \'(DC2Type:json_array)\''); | |
dfd0a7bc JB |
36 | break; |
37 | case 'postgresql': | |
842af5c3 JB |
38 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' ADD googleAuthenticatorSecret VARCHAR(191) DEFAULT NULL'); |
39 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' RENAME COLUMN twofactorauthentication TO emailTwoFactor'); | |
40 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' DROP trusted'); | |
41 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' ADD backupCodes TEXT DEFAULT NULL'); | |
dfd0a7bc JB |
42 | break; |
43 | } | |
a6b242a1 JB |
44 | } |
45 | ||
46 | public function down(Schema $schema): void | |
47 | { | |
dfd0a7bc JB |
48 | switch ($this->connection->getDatabasePlatform()->getName()) { |
49 | case 'sqlite': | |
842af5c3 JB |
50 | $this->addSql('DROP INDEX UNIQ_1D63E7E592FC23A8'); |
51 | $this->addSql('DROP INDEX UNIQ_1D63E7E5A0D96FBF'); | |
52 | $this->addSql('DROP INDEX UNIQ_1D63E7E5C05FB297'); | |
53 | $this->addSql('CREATE TEMPORARY TABLE __temp__' . $this->getTable('user', true) . ' AS SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, emailTwoFactor FROM "' . $this->getTable('user', true) . '"'); | |
54 | $this->addSql('DROP TABLE "' . $this->getTable('user', true) . '"'); | |
55 | $this->addSql('CREATE TABLE "' . $this->getTable('user', true) . '" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, username VARCHAR(180) NOT NULL, username_canonical VARCHAR(180) NOT NULL, email VARCHAR(180) NOT NULL, email_canonical VARCHAR(180) NOT NULL, enabled BOOLEAN NOT NULL, password VARCHAR(255) NOT NULL, last_login DATETIME DEFAULT NULL, password_requested_at DATETIME DEFAULT NULL, name CLOB DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL COLLATE BINARY, confirmation_token VARCHAR(255) DEFAULT NULL COLLATE BINARY, roles CLOB NOT NULL COLLATE BINARY, trusted CLOB DEFAULT NULL COLLATE BINARY)'); | |
56 | $this->addSql('INSERT INTO "' . $this->getTable('user', true) . '" (id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication) SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, emailTwoFactor FROM __temp__' . $this->getTable('user', true) . ''); | |
57 | $this->addSql('DROP TABLE __temp__' . $this->getTable('user', true) . ''); | |
58 | $this->addSql('CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON "' . $this->getTable('user', true) . '" (username_canonical)'); | |
59 | $this->addSql('CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON "' . $this->getTable('user', true) . '" (email_canonical)'); | |
60 | $this->addSql('CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON "' . $this->getTable('user', true) . '" (confirmation_token)'); | |
dfd0a7bc JB |
61 | break; |
62 | case 'mysql': | |
842af5c3 JB |
63 | $this->addSql('ALTER TABLE `' . $this->getTable('user') . '` DROP googleAuthenticatorSecret'); |
64 | $this->addSql('ALTER TABLE `' . $this->getTable('user') . '` CHANGE emailtwofactor twoFactorAuthentication BOOLEAN NOT NULL'); | |
65 | $this->addSql('ALTER TABLE `' . $this->getTable('user') . '` ADD trusted TEXT DEFAULT NULL'); | |
66 | $this->addSql('ALTER TABLE `' . $this->getTable('user') . '` DROP backupCodes'); | |
dfd0a7bc JB |
67 | break; |
68 | case 'postgresql': | |
842af5c3 JB |
69 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' DROP googleAuthenticatorSecret'); |
70 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' RENAME COLUMN emailTwoFactor TO twofactorauthentication'); | |
71 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' ADD trusted TEXT DEFAULT NULL'); | |
72 | $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' DROP backupCodes'); | |
dfd0a7bc JB |
73 | break; |
74 | } | |
a6b242a1 JB |
75 | } |
76 | } |