diff options
Diffstat (limited to 'app/DoctrineMigrations/Version20161024212538.php')
-rw-r--r-- | app/DoctrineMigrations/Version20161024212538.php | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/app/DoctrineMigrations/Version20161024212538.php b/app/DoctrineMigrations/Version20161024212538.php index 75ff86f1..ecb872d1 100644 --- a/app/DoctrineMigrations/Version20161024212538.php +++ b/app/DoctrineMigrations/Version20161024212538.php | |||
@@ -7,6 +7,9 @@ use Doctrine\DBAL\Schema\Schema; | |||
7 | use Symfony\Component\DependencyInjection\ContainerAwareInterface; | 7 | use Symfony\Component\DependencyInjection\ContainerAwareInterface; |
8 | use Symfony\Component\DependencyInjection\ContainerInterface; | 8 | use Symfony\Component\DependencyInjection\ContainerInterface; |
9 | 9 | ||
10 | /** | ||
11 | * Added user_id column on oauth2_clients to prevent users to delete API clients from other users | ||
12 | */ | ||
10 | class Version20161024212538 extends AbstractMigration implements ContainerAwareInterface | 13 | class Version20161024212538 extends AbstractMigration implements ContainerAwareInterface |
11 | { | 14 | { |
12 | /** | 15 | /** |
@@ -14,6 +17,8 @@ class Version20161024212538 extends AbstractMigration implements ContainerAwareI | |||
14 | */ | 17 | */ |
15 | private $container; | 18 | private $container; |
16 | 19 | ||
20 | private $constraintName = 'IDX_user_oauth_client'; | ||
21 | |||
17 | public function setContainer(ContainerInterface $container = null) | 22 | public function setContainer(ContainerInterface $container = null) |
18 | { | 23 | { |
19 | $this->container = $container; | 24 | $this->container = $container; |
@@ -33,13 +38,14 @@ class Version20161024212538 extends AbstractMigration implements ContainerAwareI | |||
33 | 38 | ||
34 | $this->skipIf($clientsTable->hasColumn('user_id'), 'It seems that you already played this migration.'); | 39 | $this->skipIf($clientsTable->hasColumn('user_id'), 'It seems that you already played this migration.'); |
35 | 40 | ||
36 | $clientsTable->addColumn('user_id', 'integer'); | 41 | $clientsTable->addColumn('user_id', 'integer', ['notnull' => false]); |
37 | 42 | ||
38 | $clientsTable->addForeignKeyConstraint( | 43 | $clientsTable->addForeignKeyConstraint( |
39 | $this->getTable('user'), | 44 | $this->getTable('user'), |
40 | ['user_id'], | 45 | ['user_id'], |
41 | ['id'], | 46 | ['id'], |
42 | ['onDelete' => 'CASCADE'] | 47 | ['onDelete' => 'CASCADE'], |
48 | $this->constraintName | ||
43 | ); | 49 | ); |
44 | } | 50 | } |
45 | 51 | ||
@@ -48,5 +54,14 @@ class Version20161024212538 extends AbstractMigration implements ContainerAwareI | |||
48 | */ | 54 | */ |
49 | public function down(Schema $schema) | 55 | public function down(Schema $schema) |
50 | { | 56 | { |
57 | $clientsTable = $schema->getTable($this->getTable('oauth2_clients')); | ||
58 | |||
59 | $this->skipIf(!$clientsTable->hasColumn('user_id'), 'It seems that you already played this migration.'); | ||
60 | |||
61 | $clientsTable->dropColumn('user_id', 'integer'); | ||
62 | |||
63 | if ($this->connection->getDatabasePlatform()->getName() != 'sqlite') { | ||
64 | $clientsTable->removeForeignKey($this->constraintName); | ||
65 | } | ||
51 | } | 66 | } |
52 | } | 67 | } |