1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-05-06 16:24:03 +00:00

Make validateParameter have void return type

This commit is contained in:
lukinovec 2026-04-30 09:28:48 +02:00
parent f3f1ab977a
commit 75b74f2e6c
8 changed files with 38 additions and 22 deletions

View file

@ -45,7 +45,9 @@ trait ManagesPostgresUsers
public function deleteUser(DatabaseConfig $databaseConfig): bool public function deleteUser(DatabaseConfig $databaseConfig): bool
{ {
// Tenant DB username // Tenant DB username
$username = $this->validateParameter($databaseConfig->getUsername()); $username = $databaseConfig->getUsername();
$this->validateParameter($username);
// Tenant host connection config // Tenant host connection config
$connectionName = $this->connection()->getConfig('name'); $connectionName = $this->connection()->getConfig('name');

View file

@ -47,13 +47,13 @@ trait ValidatesDatabaseParameters
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
protected function validateParameter(string|array|null $parameters, string|null $allowlist = null): string|array|null protected function validateParameter(string|array|null $parameters, string|null $allowlist = null): void
{ {
if (is_null($parameters)) { if (is_null($parameters)) {
// Return null if there's nothing to validate // Return early if there's nothing to validate
// (e.g. when $databaseConfig->getUsername() of an // (e.g. when $databaseConfig->getUsername() of an
// improperly created tenant is passed). // improperly created tenant is passed).
return null; return;
} }
$allowlist = $allowlist ?? static::parameterAllowlist(); $allowlist = $allowlist ?? static::parameterAllowlist();
@ -69,12 +69,6 @@ trait ValidatesDatabaseParameters
} }
} }
} }
throw new InvalidArgumentException("Invalid character '{$char}' in parameter: {$parameter}");
}
}
}
return $parameters;
} }
/** /**
@ -84,8 +78,8 @@ trait ValidatesDatabaseParameters
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
protected function validatePassword(string|null $password): string|null protected function validatePassword(string|null $password): void
{ {
return $this->validateParameter($password, static::passwordAllowlist()); $this->validateParameter($password, static::passwordAllowlist());
} }
} }

View file

@ -10,14 +10,18 @@ class MicrosoftSQLDatabaseManager extends TenantDatabaseManager
{ {
public function createDatabase(TenantWithDatabase $tenant): bool public function createDatabase(TenantWithDatabase $tenant): bool
{ {
$database = $this->validateParameter($tenant->database()->getName()); $database = $tenant->database()->getName();
$this->validateParameter($database);
return $this->connection()->statement("CREATE DATABASE [{$database}]"); return $this->connection()->statement("CREATE DATABASE [{$database}]");
} }
public function deleteDatabase(TenantWithDatabase $tenant): bool public function deleteDatabase(TenantWithDatabase $tenant): bool
{ {
$database = $this->validateParameter($tenant->database()->getName()); $database = $tenant->database()->getName();
$this->validateParameter($database);
return $this->connection()->statement("DROP DATABASE [{$database}]"); return $this->connection()->statement("DROP DATABASE [{$database}]");
} }

View file

@ -21,7 +21,9 @@ class MySQLDatabaseManager extends TenantDatabaseManager
public function deleteDatabase(TenantWithDatabase $tenant): bool public function deleteDatabase(TenantWithDatabase $tenant): bool
{ {
$database = $this->validateParameter($tenant->database()->getName()); $database = $tenant->database()->getName();
$this->validateParameter($database);
return $this->connection()->statement("DROP DATABASE `{$database}`"); return $this->connection()->statement("DROP DATABASE `{$database}`");
} }

View file

@ -40,7 +40,9 @@ class PermissionControlledMicrosoftSQLServerDatabaseManager extends MicrosoftSQL
public function deleteUser(DatabaseConfig $databaseConfig): bool public function deleteUser(DatabaseConfig $databaseConfig): bool
{ {
$username = $this->validateParameter($databaseConfig->getUsername()); $username = $databaseConfig->getUsername();
$this->validateParameter($username);
return $this->connection()->statement("DROP LOGIN [{$username}]"); return $this->connection()->statement("DROP LOGIN [{$username}]");
} }
@ -59,7 +61,9 @@ class PermissionControlledMicrosoftSQLServerDatabaseManager extends MicrosoftSQL
public function deleteDatabase(TenantWithDatabase $tenant): bool public function deleteDatabase(TenantWithDatabase $tenant): bool
{ {
$name = $this->validateParameter($tenant->database()->getName()); $name = $tenant->database()->getName();
$this->validateParameter($name);
// Close all connections to the database before deleting it // Close all connections to the database before deleting it
// Set the database to SINGLE_USER mode to ensure that // Set the database to SINGLE_USER mode to ensure that

View file

@ -51,7 +51,9 @@ class PermissionControlledMySQLDatabaseManager extends MySQLDatabaseManager impl
public function deleteUser(DatabaseConfig $databaseConfig): bool public function deleteUser(DatabaseConfig $databaseConfig): bool
{ {
$username = $this->validateParameter($databaseConfig->getUsername()); $username = $databaseConfig->getUsername();
$this->validateParameter($username);
return $this->connection()->statement("DROP USER IF EXISTS '{$username}'"); return $this->connection()->statement("DROP USER IF EXISTS '{$username}'");
} }

View file

@ -10,14 +10,18 @@ class PostgreSQLDatabaseManager extends TenantDatabaseManager
{ {
public function createDatabase(TenantWithDatabase $tenant): bool public function createDatabase(TenantWithDatabase $tenant): bool
{ {
$name = $this->validateParameter($tenant->database()->getName()); $name = $tenant->database()->getName();
$this->validateParameter($name);
return $this->connection()->statement("CREATE DATABASE \"{$name}\" WITH TEMPLATE=template0"); return $this->connection()->statement("CREATE DATABASE \"{$name}\" WITH TEMPLATE=template0");
} }
public function deleteDatabase(TenantWithDatabase $tenant): bool public function deleteDatabase(TenantWithDatabase $tenant): bool
{ {
$name = $this->validateParameter($tenant->database()->getName()); $name = $tenant->database()->getName();
$this->validateParameter($name);
return $this->connection()->statement("DROP DATABASE \"{$name}\""); return $this->connection()->statement("DROP DATABASE \"{$name}\"");
} }

View file

@ -10,14 +10,18 @@ class PostgreSQLSchemaManager extends TenantDatabaseManager
{ {
public function createDatabase(TenantWithDatabase $tenant): bool public function createDatabase(TenantWithDatabase $tenant): bool
{ {
$name = $this->validateParameter($tenant->database()->getName()); $name = $tenant->database()->getName();
$this->validateParameter($name);
return $this->connection()->statement("CREATE SCHEMA \"{$name}\""); return $this->connection()->statement("CREATE SCHEMA \"{$name}\"");
} }
public function deleteDatabase(TenantWithDatabase $tenant): bool public function deleteDatabase(TenantWithDatabase $tenant): bool
{ {
$name = $this->validateParameter($tenant->database()->getName()); $name = $tenant->database()->getName();
$this->validateParameter($name);
return $this->connection()->statement("DROP SCHEMA \"{$name}\" CASCADE"); return $this->connection()->statement("DROP SCHEMA \"{$name}\" CASCADE");
} }