diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 855db8a2c9..2a8b951a7d 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -71,7 +71,14 @@ function createUser(string $hash, mixed $hashOptions, string $userId, ?string $e : ID::custom($userId); if ($project->getAttribute('auths', [])['personalDataCheck'] ?? false) { - $personalDataValidator = new PersonalData($userId, $email, $name, $phone); + $personalDataValidator = new PersonalData( + $userId, + $email, + $name, + $phone, + strict: false, + allowEmpty: true + ); if (!$personalDataValidator->isValid($plaintextPassword)) { throw new Exception(Exception::USER_PASSWORD_PERSONAL_DATA); } diff --git a/src/Appwrite/Auth/Validator/PersonalData.php b/src/Appwrite/Auth/Validator/PersonalData.php index 6e2b4a9bd7..8eaae002f6 100644 --- a/src/Appwrite/Auth/Validator/PersonalData.php +++ b/src/Appwrite/Auth/Validator/PersonalData.php @@ -12,9 +12,10 @@ class PersonalData extends Password protected ?string $email = null, protected ?string $name = null, protected ?string $phone = null, - protected bool $strict = false + protected bool $strict = false, + protected bool $allowEmpty = false, ) { - parent::__construct(); + parent::__construct($allowEmpty); } /** diff --git a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php index a189e4630e..80227577cc 100644 --- a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php +++ b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php @@ -1731,6 +1731,19 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(201, $response['headers']['status-code']); + $response = $this->client->call(Client::METHOD_POST, '/users', array_merge($this->getHeaders(), [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $id, + 'x-appwrite-mode' => 'admin', + ]), [ + // Empty password + 'email' => uniqid() . 'user@localhost.test', + 'name' => 'User', + 'userId' => ID::unique(), + ]); + + $this->assertEquals(201, $response['headers']['status-code']); + $email = uniqid() . 'user@localhost.test'; $userId = ID::unique(); $response = $this->client->call(Client::METHOD_POST, '/users', array_merge($this->getHeaders(), [