feat: integrate Utopia Emails library for email validation

- Added Utopia Emails library as a dependency in composer.json.
- Updated email validation references across multiple API controllers to use the new Utopia Emails validator.
- Removed the deprecated disposable emails configuration file.
- Updated composer.lock to reflect the new library and version changes for existing dependencies.
This commit is contained in:
Eldad Fux
2025-10-19 21:44:22 +01:00
parent f6438065e3
commit 68b72f3162
17 changed files with 93 additions and 75 deletions
-4
View File
@@ -1,4 +0,0 @@
<?php
return [
];
+1 -1
View File
@@ -20,7 +20,7 @@ use Appwrite\Event\Messaging;
use Appwrite\Event\StatsUsage;
use Appwrite\Extend\Exception;
use Appwrite\Hooks\Hooks;
use Appwrite\Network\Validator\Email;
use Utopia\Emails\Validator\Email;
use Appwrite\Network\Validator\Redirect;
use Appwrite\OpenSSL\OpenSSL;
use Appwrite\SDK\AuthType;
+1 -1
View File
@@ -8,7 +8,7 @@ use Appwrite\Event\Event;
use Appwrite\Event\Messaging;
use Appwrite\Extend\Exception;
use Appwrite\Messaging\Status as MessageStatus;
use Appwrite\Network\Validator\Email;
use Utopia\Emails\Validator\Email;
use Appwrite\Permission;
use Appwrite\Role;
use Appwrite\SDK\AuthType;
+1 -1
View File
@@ -9,7 +9,7 @@ use Appwrite\Event\Validator\Event;
use Appwrite\Extend\Exception;
use Appwrite\Hooks\Hooks;
use Appwrite\Network\Platform;
use Appwrite\Network\Validator\Email;
use Utopia\Emails\Validator\Email;
use Appwrite\SDK\AuthType;
use Appwrite\SDK\ContentType;
use Appwrite\SDK\Deprecated;
+1 -1
View File
@@ -10,7 +10,7 @@ use Appwrite\Event\Mail;
use Appwrite\Event\Messaging;
use Appwrite\Event\StatsUsage;
use Appwrite\Extend\Exception;
use Appwrite\Network\Validator\Email;
use Utopia\Emails\Validator\Email;
use Appwrite\Network\Validator\Redirect;
use Appwrite\Platform\Workers\Deletes;
use Appwrite\SDK\AuthType;
+1 -1
View File
@@ -16,7 +16,7 @@ use Appwrite\Event\Delete;
use Appwrite\Event\Event;
use Appwrite\Extend\Exception;
use Appwrite\Hooks\Hooks;
use Appwrite\Network\Validator\Email;
use Utopia\Emails\Validator\Email;
use Appwrite\SDK\AuthType;
use Appwrite\SDK\ContentType;
use Appwrite\SDK\Deprecated;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
use Appwrite\Network\Validator\Email;
use Utopia\Emails\Validator\Email;
use Utopia\Database\Database;
use Utopia\Database\Validator\Datetime as DatetimeValidator;
use Utopia\Database\Validator\Structure;
+1
View File
@@ -57,6 +57,7 @@
"utopia-php/domains": "0.8.*",
"utopia-php/dns": "0.3.*",
"utopia-php/dsn": "0.2.1",
"utopia-php/emails": "0.4.*",
"utopia-php/framework": "0.33.*",
"utopia-php/fetch": "0.4.*",
"utopia-php/image": "0.8.*",
Generated
+73 -13
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "568800edca746c4e8d0d50648b25f589",
"content-hash": "2fbd76a832756d8b21adf27e5b0a7cc7",
"packages": [
{
"name": "adhocore/jwt",
@@ -756,16 +756,16 @@
},
{
"name": "google/protobuf",
"version": "v4.32.1",
"version": "v4.33.0",
"source": {
"type": "git",
"url": "https://github.com/protocolbuffers/protobuf-php.git",
"reference": "c4ed1c1f9bbc1e91766e2cd6c0af749324fe87cb"
"reference": "b50269e23204e5ae859a326ec3d90f09efe3047d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/c4ed1c1f9bbc1e91766e2cd6c0af749324fe87cb",
"reference": "c4ed1c1f9bbc1e91766e2cd6c0af749324fe87cb",
"url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/b50269e23204e5ae859a326ec3d90f09efe3047d",
"reference": "b50269e23204e5ae859a326ec3d90f09efe3047d",
"shasum": ""
},
"require": {
@@ -794,9 +794,9 @@
"proto"
],
"support": {
"source": "https://github.com/protocolbuffers/protobuf-php/tree/v4.32.1"
"source": "https://github.com/protocolbuffers/protobuf-php/tree/v4.33.0"
},
"time": "2025-09-14T05:14:52+00:00"
"time": "2025-10-15T20:10:28+00:00"
},
{
"name": "league/csv",
@@ -3792,16 +3792,16 @@
},
{
"name": "utopia-php/domains",
"version": "0.8.2",
"version": "0.8.4",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/domains.git",
"reference": "caa294dcebd05c8af876c8afef3e992faccdf645"
"reference": "316a76b0fcbc7f82e40be466c22c19acb243ee22"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/domains/zipball/caa294dcebd05c8af876c8afef3e992faccdf645",
"reference": "caa294dcebd05c8af876c8afef3e992faccdf645",
"url": "https://api.github.com/repos/utopia-php/domains/zipball/316a76b0fcbc7f82e40be466c22c19acb243ee22",
"reference": "316a76b0fcbc7f82e40be466c22c19acb243ee22",
"shasum": ""
},
"require": {
@@ -3847,9 +3847,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/domains/issues",
"source": "https://github.com/utopia-php/domains/tree/0.8.2"
"source": "https://github.com/utopia-php/domains/tree/0.8.4"
},
"time": "2025-10-06T09:56:54+00:00"
"time": "2025-10-17T11:31:56+00:00"
},
{
"name": "utopia-php/dsn",
@@ -3898,6 +3898,66 @@
},
"time": "2024-05-07T02:01:25+00:00"
},
{
"name": "utopia-php/emails",
"version": "0.4.0",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/emails.git",
"reference": "48d772c854a176f063e495d0179a1369087fd4f0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/emails/zipball/48d772c854a176f063e495d0179a1369087fd4f0",
"reference": "48d772c854a176f063e495d0179a1369087fd4f0",
"shasum": ""
},
"require": {
"php": ">=8.0",
"utopia-php/cli": "^0.15",
"utopia-php/domains": "^0.8",
"utopia-php/fetch": "^0.4",
"utopia-php/framework": "0.33.*"
},
"require-dev": {
"laravel/pint": "1.25.*",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9.3"
},
"type": "library",
"autoload": {
"psr-4": {
"Utopia\\Emails\\": "src/Emails"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eldad Fux",
"email": "eldad@appwrite.io"
}
],
"description": "Utopia Emails library is simple and lite library for parsing and validating email addresses. This library is aiming to be as simple and easy to learn and use.",
"keywords": [
"RFC5322",
"email",
"emails",
"framework",
"parsing",
"php",
"upf",
"utopia",
"validation"
],
"support": {
"issues": "https://github.com/utopia-php/emails/issues",
"source": "https://github.com/utopia-php/emails/tree/0.4.0"
},
"time": "2025-10-19T20:31:42+00:00"
},
{
"name": "utopia-php/fetch",
"version": "0.4.2",
+1 -1
View File
@@ -273,7 +273,7 @@ class Mapper
case 'Appwrite\Event\Validator\Event':
case 'Appwrite\Event\Validator\FunctionEvent':
case 'Appwrite\Network\Validator\CNAME':
case 'Appwrite\Network\Validator\Email':
case 'Utopia\Emails\Validator\Email':
case 'Appwrite\Network\Validator\Redirect':
case 'Appwrite\Network\Validator\DNS':
case 'Appwrite\Network\Validator\Origin':
+6 -45
View File
@@ -2,16 +2,17 @@
namespace Appwrite\Network\Validator;
use Utopia\Validator;
use Utopia\Emails\Validator\Email as UtopiaEmailValidator;
/**
* Email
*
* Validate that an variable is a valid email address
* Extends the new Utopia Emails validator to maintain backward compatibility
*
* @package Utopia\Validator
* @package Appwrite\Network\Validator
*/
class Email extends Validator
class Email extends UtopiaEmailValidator
{
protected bool $allowEmpty;
@@ -20,18 +21,6 @@ class Email extends Validator
$this->allowEmpty = $allowEmpty;
}
/**
* Get Description
*
* Returns validator description
*
* @return string
*/
public function getDescription(): string
{
return 'Value must be a valid email address';
}
/**
* Is valid
*
@@ -46,34 +35,6 @@ class Email extends Validator
return true;
}
if (!\filter_var($value, FILTER_VALIDATE_EMAIL)) {
return false;
}
return true;
return parent::isValid($value);
}
/**
* Is array
*
* Function will return true if object is array.
*
* @return bool
*/
public function isArray(): bool
{
return false;
}
/**
* Get Type
*
* Returns validator type.
*
* @return string
*/
public function getType(): string
{
return self::TYPE_STRING;
}
}
}
@@ -4,7 +4,7 @@ namespace Appwrite\Platform\Modules\Databases\Http\Databases\Collections\Attribu
use Appwrite\Event\Database as EventDatabase;
use Appwrite\Event\Event;
use Appwrite\Network\Validator\Email;
use Utopia\Emails\Validator\Email;
use Appwrite\Platform\Modules\Databases\Http\Databases\Collections\Attributes\Action;
use Appwrite\SDK\AuthType;
use Appwrite\SDK\Deprecated;
@@ -3,7 +3,7 @@
namespace Appwrite\Platform\Modules\Databases\Http\Databases\Collections\Attributes\Email;
use Appwrite\Event\Event;
use Appwrite\Network\Validator\Email;
use Utopia\Emails\Validator\Email;
use Appwrite\Platform\Modules\Databases\Http\Databases\Collections\Attributes\Action;
use Appwrite\SDK\AuthType;
use Appwrite\SDK\ContentType;
@@ -2,7 +2,7 @@
namespace Appwrite\Platform\Modules\Databases\Http\TablesDB\Tables\Columns\Email;
use Appwrite\Network\Validator\Email;
use Utopia\Emails\Validator\Email;
use Appwrite\Platform\Modules\Databases\Http\Databases\Collections\Attributes\Email\Create as EmailCreate;
use Appwrite\SDK\AuthType;
use Appwrite\SDK\Method;
@@ -2,7 +2,7 @@
namespace Appwrite\Platform\Modules\Databases\Http\TablesDB\Tables\Columns\Email;
use Appwrite\Network\Validator\Email;
use Utopia\Emails\Validator\Email;
use Appwrite\Platform\Modules\Databases\Http\Databases\Collections\Attributes\Email\Update as EmailUpdate;
use Appwrite\SDK\AuthType;
use Appwrite\SDK\ContentType;
@@ -464,7 +464,7 @@ class OpenAPI3 extends Format
Database::VAR_POLYGON => '[[[1, 2], [3, 4], [5, 6], [1, 2]]]',
};
break;
case 'Appwrite\Network\Validator\Email':
case 'Utopia\Emails\Validator\Email':
$node['schema']['type'] = $validator->getType();
$node['schema']['format'] = 'email';
$node['schema']['x-example'] = 'email@example.com';
@@ -471,7 +471,7 @@ class Swagger2 extends Format
Database::VAR_POLYGON => '[[[1, 2], [3, 4], [5, 6], [1, 2]]]',
};
break;
case 'Appwrite\Network\Validator\Email':
case 'Utopia\Emails\Validator\Email':
$node['type'] = $validator->getType();
$node['format'] = 'email';
$node['x-example'] = 'email@example.com';