2024-12-30 09:44:47 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
use Core\Driver\SQL\Column\IntColumn;
|
|
|
|
use Core\Driver\SQL\Column\StringColumn;
|
|
|
|
use Core\Driver\SQL\Constraint\ForeignKey;
|
|
|
|
use Core\Driver\SQL\Strategy\CascadeStrategy;
|
|
|
|
use Core\Objects\DatabaseEntity\SsoProvider;
|
2024-12-30 10:41:13 +01:00
|
|
|
use Core\Objects\DatabaseEntity\SsoRequest;
|
2024-12-30 09:44:47 +01:00
|
|
|
use Core\Objects\DatabaseEntity\User;
|
|
|
|
|
|
|
|
$userHandler = User::getHandler($sql);
|
|
|
|
$ssoProviderHandler = SsoProvider::getHandler($sql);
|
2024-12-30 10:41:13 +01:00
|
|
|
$ssoRequestHandler = SsoRequest::getHandler($sql);
|
2024-12-30 09:44:47 +01:00
|
|
|
|
|
|
|
$userTable = $userHandler->getTableName();
|
|
|
|
$ssoProviderTable = $ssoProviderHandler->getTableName();
|
|
|
|
$ssoProviderColumn = $userHandler->getColumnName("ssoProvider", false);
|
|
|
|
$passwordColumn = $userHandler->getColumnName("password");
|
|
|
|
|
2024-12-30 10:41:13 +01:00
|
|
|
// create new tables
|
|
|
|
$queries = array_merge(
|
|
|
|
$queries,
|
|
|
|
$ssoProviderHandler->getCreateQueries($sql),
|
|
|
|
$ssoRequestHandler->getCreateQueries($sql)
|
|
|
|
);
|
2024-12-30 09:44:47 +01:00
|
|
|
|
2024-12-30 10:41:13 +01:00
|
|
|
// add sso column to user table
|
2024-12-30 09:44:47 +01:00
|
|
|
$queries[] = $sql->alterTable($userTable)
|
|
|
|
->add(new IntColumn($ssoProviderColumn, true,null));
|
|
|
|
|
|
|
|
// make password nullable for SSO-login
|
|
|
|
$queries[] = $sql->alterTable($userTable)
|
|
|
|
->modify(new StringColumn($passwordColumn, 128,true));
|
|
|
|
|
2024-12-30 10:41:13 +01:00
|
|
|
// create foreign key constraint for sso column
|
2024-12-30 09:44:47 +01:00
|
|
|
$constraint = new ForeignKey($ssoProviderColumn, $ssoProviderTable, "id", new CascadeStrategy());
|
|
|
|
$constraint->setName("${userTable}_ibfk_$ssoProviderColumn");
|
|
|
|
$queries[] = $sql->alterTable($userTable)
|
|
|
|
->add($constraint);
|