@@ -28,97 +28,97 @@ |
||
| 28 | 28 | |
| 29 | 29 | class MigrateOauthTables implements IRepairStep { |
| 30 | 30 | |
| 31 | - /** @var Connection */ |
|
| 32 | - protected $db; |
|
| 31 | + /** @var Connection */ |
|
| 32 | + protected $db; |
|
| 33 | 33 | |
| 34 | - /** |
|
| 35 | - * @param Connection $db |
|
| 36 | - */ |
|
| 37 | - public function __construct(Connection $db) { |
|
| 38 | - $this->db = $db; |
|
| 39 | - } |
|
| 34 | + /** |
|
| 35 | + * @param Connection $db |
|
| 36 | + */ |
|
| 37 | + public function __construct(Connection $db) { |
|
| 38 | + $this->db = $db; |
|
| 39 | + } |
|
| 40 | 40 | |
| 41 | - /** |
|
| 42 | - * @return string |
|
| 43 | - */ |
|
| 44 | - public function getName() { |
|
| 45 | - return 'Migrate oauth2_clients table to nextcloud schema'; |
|
| 46 | - } |
|
| 41 | + /** |
|
| 42 | + * @return string |
|
| 43 | + */ |
|
| 44 | + public function getName() { |
|
| 45 | + return 'Migrate oauth2_clients table to nextcloud schema'; |
|
| 46 | + } |
|
| 47 | 47 | |
| 48 | - public function run(IOutput $output) { |
|
| 49 | - $schema = new SchemaWrapper($this->db); |
|
| 50 | - if (!$schema->hasTable('oauth2_clients')) { |
|
| 51 | - $output->info("oauth2_clients table does not exist."); |
|
| 52 | - return; |
|
| 53 | - } |
|
| 48 | + public function run(IOutput $output) { |
|
| 49 | + $schema = new SchemaWrapper($this->db); |
|
| 50 | + if (!$schema->hasTable('oauth2_clients')) { |
|
| 51 | + $output->info("oauth2_clients table does not exist."); |
|
| 52 | + return; |
|
| 53 | + } |
|
| 54 | 54 | |
| 55 | - $output->info("Update the oauth2_access_tokens table schema."); |
|
| 56 | - $schema = new SchemaWrapper($this->db); |
|
| 57 | - $table = $schema->getTable('oauth2_access_tokens'); |
|
| 58 | - if (!$table->hasColumn('hashed_code')) { |
|
| 59 | - $table->addColumn('hashed_code', 'string', [ |
|
| 60 | - 'notnull' => true, |
|
| 61 | - 'length' => 128, |
|
| 62 | - ]); |
|
| 63 | - } |
|
| 64 | - if (!$table->hasColumn('encrypted_token')) { |
|
| 65 | - $table->addColumn('encrypted_token', 'string', [ |
|
| 66 | - 'notnull' => true, |
|
| 67 | - 'length' => 786, |
|
| 68 | - ]); |
|
| 69 | - } |
|
| 70 | - if (!$table->hasIndex('oauth2_access_hash_idx')) { |
|
| 71 | - $table->addUniqueIndex(['hashed_code'], 'oauth2_access_hash_idx'); |
|
| 72 | - } |
|
| 73 | - if (!$table->hasIndex('oauth2_access_client_id_idx')) { |
|
| 74 | - $table->addIndex(['client_id'], 'oauth2_access_client_id_idx'); |
|
| 75 | - } |
|
| 55 | + $output->info("Update the oauth2_access_tokens table schema."); |
|
| 56 | + $schema = new SchemaWrapper($this->db); |
|
| 57 | + $table = $schema->getTable('oauth2_access_tokens'); |
|
| 58 | + if (!$table->hasColumn('hashed_code')) { |
|
| 59 | + $table->addColumn('hashed_code', 'string', [ |
|
| 60 | + 'notnull' => true, |
|
| 61 | + 'length' => 128, |
|
| 62 | + ]); |
|
| 63 | + } |
|
| 64 | + if (!$table->hasColumn('encrypted_token')) { |
|
| 65 | + $table->addColumn('encrypted_token', 'string', [ |
|
| 66 | + 'notnull' => true, |
|
| 67 | + 'length' => 786, |
|
| 68 | + ]); |
|
| 69 | + } |
|
| 70 | + if (!$table->hasIndex('oauth2_access_hash_idx')) { |
|
| 71 | + $table->addUniqueIndex(['hashed_code'], 'oauth2_access_hash_idx'); |
|
| 72 | + } |
|
| 73 | + if (!$table->hasIndex('oauth2_access_client_id_idx')) { |
|
| 74 | + $table->addIndex(['client_id'], 'oauth2_access_client_id_idx'); |
|
| 75 | + } |
|
| 76 | 76 | |
| 77 | - $output->info("Update the oauth2_clients table schema."); |
|
| 78 | - $schema = new SchemaWrapper($this->db); |
|
| 79 | - $table = $schema->getTable('oauth2_clients'); |
|
| 80 | - if ($table->getColumn('name')->getLength() !== 64) { |
|
| 81 | - $table->getColumn('name')->setLength(64); |
|
| 82 | - } |
|
| 83 | - if ($table->hasColumn('allow_subdomains')) { |
|
| 84 | - $table->dropColumn('allow_subdomains'); |
|
| 85 | - } |
|
| 77 | + $output->info("Update the oauth2_clients table schema."); |
|
| 78 | + $schema = new SchemaWrapper($this->db); |
|
| 79 | + $table = $schema->getTable('oauth2_clients'); |
|
| 80 | + if ($table->getColumn('name')->getLength() !== 64) { |
|
| 81 | + $table->getColumn('name')->setLength(64); |
|
| 82 | + } |
|
| 83 | + if ($table->hasColumn('allow_subdomains')) { |
|
| 84 | + $table->dropColumn('allow_subdomains'); |
|
| 85 | + } |
|
| 86 | 86 | |
| 87 | - if (!$schema->getTable('oauth2_clients')->hasColumn('client_identifier')) { |
|
| 88 | - $table->addColumn('client_identifier', 'string', [ |
|
| 89 | - 'notnull' => true, |
|
| 90 | - 'length' => 64, |
|
| 91 | - 'default' => '' |
|
| 92 | - ]); |
|
| 93 | - $table->addIndex(['client_identifier'], 'oauth2_client_id_idx'); |
|
| 94 | - } |
|
| 87 | + if (!$schema->getTable('oauth2_clients')->hasColumn('client_identifier')) { |
|
| 88 | + $table->addColumn('client_identifier', 'string', [ |
|
| 89 | + 'notnull' => true, |
|
| 90 | + 'length' => 64, |
|
| 91 | + 'default' => '' |
|
| 92 | + ]); |
|
| 93 | + $table->addIndex(['client_identifier'], 'oauth2_client_id_idx'); |
|
| 94 | + } |
|
| 95 | 95 | |
| 96 | - $this->db->migrateToSchema($schema->getWrappedSchema()); |
|
| 96 | + $this->db->migrateToSchema($schema->getWrappedSchema()); |
|
| 97 | 97 | |
| 98 | 98 | |
| 99 | - if ($schema->getTable('oauth2_clients')->hasColumn('identifier')) { |
|
| 100 | - $output->info("Move identifier column's data to the new client_identifier column."); |
|
| 101 | - // 1. Fetch all [id, identifier] couple. |
|
| 102 | - $selectQuery = $this->db->getQueryBuilder(); |
|
| 103 | - $selectQuery->select('id', 'identifier')->from('oauth2_clients'); |
|
| 104 | - $result = $selectQuery->executeQuery(); |
|
| 105 | - $identifiers = $result->fetchAll(); |
|
| 106 | - $result->closeCursor(); |
|
| 99 | + if ($schema->getTable('oauth2_clients')->hasColumn('identifier')) { |
|
| 100 | + $output->info("Move identifier column's data to the new client_identifier column."); |
|
| 101 | + // 1. Fetch all [id, identifier] couple. |
|
| 102 | + $selectQuery = $this->db->getQueryBuilder(); |
|
| 103 | + $selectQuery->select('id', 'identifier')->from('oauth2_clients'); |
|
| 104 | + $result = $selectQuery->executeQuery(); |
|
| 105 | + $identifiers = $result->fetchAll(); |
|
| 106 | + $result->closeCursor(); |
|
| 107 | 107 | |
| 108 | - // 2. Insert them into the client_identifier column. |
|
| 109 | - foreach ($identifiers as ["id" => $id, "identifier" => $clientIdentifier]) { |
|
| 110 | - $insertQuery = $this->db->getQueryBuilder(); |
|
| 111 | - $insertQuery->update('oauth2_clients') |
|
| 112 | - ->set('client_identifier', $insertQuery->createNamedParameter($clientIdentifier, IQueryBuilder::PARAM_STR)) |
|
| 113 | - ->where($insertQuery->expr()->eq('id', $insertQuery->createNamedParameter($id, IQueryBuilder::PARAM_INT))) |
|
| 114 | - ->executeStatement(); |
|
| 115 | - } |
|
| 108 | + // 2. Insert them into the client_identifier column. |
|
| 109 | + foreach ($identifiers as ["id" => $id, "identifier" => $clientIdentifier]) { |
|
| 110 | + $insertQuery = $this->db->getQueryBuilder(); |
|
| 111 | + $insertQuery->update('oauth2_clients') |
|
| 112 | + ->set('client_identifier', $insertQuery->createNamedParameter($clientIdentifier, IQueryBuilder::PARAM_STR)) |
|
| 113 | + ->where($insertQuery->expr()->eq('id', $insertQuery->createNamedParameter($id, IQueryBuilder::PARAM_INT))) |
|
| 114 | + ->executeStatement(); |
|
| 115 | + } |
|
| 116 | 116 | |
| 117 | - $output->info("Drop the identifier column."); |
|
| 118 | - $schema = new SchemaWrapper($this->db); |
|
| 119 | - $table = $schema->getTable('oauth2_clients'); |
|
| 120 | - $table->dropColumn('identifier'); |
|
| 121 | - $this->db->migrateToSchema($schema->getWrappedSchema()); |
|
| 122 | - } |
|
| 123 | - } |
|
| 117 | + $output->info("Drop the identifier column."); |
|
| 118 | + $schema = new SchemaWrapper($this->db); |
|
| 119 | + $table = $schema->getTable('oauth2_clients'); |
|
| 120 | + $table->dropColumn('identifier'); |
|
| 121 | + $this->db->migrateToSchema($schema->getWrappedSchema()); |
|
| 122 | + } |
|
| 123 | + } |
|
| 124 | 124 | } |