EmailValidator

This commit is contained in:
fogelito
2025-11-11 15:00:09 +02:00
parent 27d0c511ac
commit da0a6b167f
3 changed files with 66 additions and 66 deletions
+43 -43
View File
@@ -57,7 +57,7 @@ use Utopia\Database\Validator\Query\Cursor;
use Utopia\Database\Validator\Query\Limit;
use Utopia\Database\Validator\Query\Offset;
use Utopia\Database\Validator\UID;
use Utopia\Emails\Email as EmailCanonical;
use Utopia\Emails\Email as EmailValidator;
use Utopia\Locale\Locale;
use Utopia\Storage\Validator\FileName;
use Utopia\System\System;
@@ -397,9 +397,9 @@ App::post('/v1/account')
$password = Auth::passwordHash($password, Auth::DEFAULT_ALGO, Auth::DEFAULT_ALGO_OPTIONS);
try {
$emailCanonical = new EmailCanonical($email);
$emailValidator = new EmailValidator($email);
} catch (Throwable) {
$emailCanonical = null;
$emailValidator = null;
}
try {
@@ -430,11 +430,11 @@ App::post('/v1/account')
'authenticators' => null,
'search' => implode(' ', [$userId, $email, $name]),
'accessedAt' => DateTime::now(),
'emailCanonical' => $emailCanonical?->getCanonical(),
'emailIsCanonical' => $emailCanonical?->isCanonicalSupported(),
'emailIsCorporate' => $emailCanonical?->isCorporate(),
'emailIsDisposable' => $emailCanonical?->isDisposable(),
'emailIsFree' => $emailCanonical?->isFree(),
'emailCanonical' => $emailValidator?->getCanonical(),
'emailIsCanonical' => $emailValidator?->isCanonicalSupported(),
'emailIsCorporate' => $emailValidator?->isCorporate(),
'emailIsDisposable' => $emailValidator?->isDisposable(),
'emailIsFree' => $emailValidator?->isFree(),
]);
$user->removeAttribute('$sequence');
@@ -1613,9 +1613,9 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
}
try {
$emailCanonical = new EmailCanonical($email);
$emailValidator = new EmailValidator($email);
} catch (Throwable) {
$emailCanonical = null;
$emailValidator = null;
}
try {
@@ -1645,11 +1645,11 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
'authenticators' => null,
'search' => implode(' ', [$userId, $email, $name]),
'accessedAt' => DateTime::now(),
'emailCanonical' => $emailCanonical?->getCanonical(),
'emailIsCanonical' => $emailCanonical?->isCanonicalSupported(),
'emailIsCorporate' => $emailCanonical?->isCorporate(),
'emailIsDisposable' => $emailCanonical?->isDisposable(),
'emailIsFree' => $emailCanonical?->isFree(),
'emailCanonical' => $emailValidator?->getCanonical(),
'emailIsCanonical' => $emailValidator?->isCanonicalSupported(),
'emailIsCorporate' => $emailValidator?->isCorporate(),
'emailIsDisposable' => $emailValidator?->isDisposable(),
'emailIsFree' => $emailValidator?->isFree(),
]);
$user->removeAttribute('$sequence');
@@ -1724,16 +1724,16 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
$user->setAttribute('email', $oauth2->getUserEmail($accessToken));
try {
$emailCanonical = new EmailCanonical($user->getAttribute('email'));
$emailValidator = new EmailValidator($user->getAttribute('email'));
} catch (Throwable) {
$emailCanonical = null;
$emailValidator = null;
}
$user->setAttribute('emailCanonical', $emailCanonical?->getCanonical());
$user->setAttribute('emailIsCanonical', $emailCanonical?->isCanonicalSupported());
$user->setAttribute('emailIsCorporate', $emailCanonical?->isCorporate());
$user->setAttribute('emailIsDisposable', $emailCanonical?->isDisposable());
$user->setAttribute('emailIsFree', $emailCanonical?->isFree());
$user->setAttribute('emailCanonical', $emailValidator?->getCanonical());
$user->setAttribute('emailIsCanonical', $emailValidator?->isCanonicalSupported());
$user->setAttribute('emailIsCorporate', $emailValidator?->isCorporate());
$user->setAttribute('emailIsDisposable', $emailValidator?->isDisposable());
$user->setAttribute('emailIsFree', $emailValidator?->isFree());
}
if (empty($user->getAttribute('name'))) {
@@ -2029,9 +2029,9 @@ App::post('/v1/account/tokens/magic-url')
$userId = $userId === 'unique()' ? ID::unique() : $userId;
try {
$emailCanonical = new EmailCanonical($email);
$emailValidator = new EmailValidator($email);
} catch (Throwable) {
$emailCanonical = null;
$emailValidator = null;
}
$user->setAttributes([
@@ -2058,11 +2058,11 @@ App::post('/v1/account/tokens/magic-url')
'authenticators' => null,
'search' => implode(' ', [$userId, $email]),
'accessedAt' => DateTime::now(),
'emailCanonical' => $emailCanonical?->getCanonical(),
'emailIsCanonical' => $emailCanonical?->isCanonicalSupported(),
'emailIsCorporate' => $emailCanonical?->isCorporate(),
'emailIsDisposable' => $emailCanonical?->isDisposable(),
'emailIsFree' => $emailCanonical?->isFree(),
'emailCanonical' => $emailValidator?->getCanonical(),
'emailIsCanonical' => $emailValidator?->isCanonicalSupported(),
'emailIsCorporate' => $emailValidator?->isCorporate(),
'emailIsDisposable' => $emailValidator?->isDisposable(),
'emailIsFree' => $emailValidator?->isFree(),
]);
$user->removeAttribute('$sequence');
@@ -2290,9 +2290,9 @@ App::post('/v1/account/tokens/email')
$userId = $userId === 'unique()' ? ID::unique() : $userId;
try {
$emailCanonical = new EmailCanonical($email);
$emailValidator = new EmailValidator($email);
} catch (Throwable) {
$emailCanonical = null;
$emailValidator = null;
}
$user->setAttributes([
@@ -2317,11 +2317,11 @@ App::post('/v1/account/tokens/email')
'memberships' => null,
'search' => implode(' ', [$userId, $email]),
'accessedAt' => DateTime::now(),
'emailCanonical' => $emailCanonical?->getCanonical(),
'emailIsCanonical' => $emailCanonical?->isCanonicalSupported(),
'emailIsCorporate' => $emailCanonical?->isCorporate(),
'emailIsDisposable' => $emailCanonical?->isDisposable(),
'emailIsFree' => $emailCanonical?->isFree(),
'emailCanonical' => $emailValidator?->getCanonical(),
'emailIsCanonical' => $emailValidator?->isCanonicalSupported(),
'emailIsCorporate' => $emailValidator?->isCorporate(),
'emailIsDisposable' => $emailValidator?->isDisposable(),
'emailIsFree' => $emailValidator?->isFree(),
]);
$user->removeAttribute('$sequence');
@@ -3138,19 +3138,19 @@ App::patch('/v1/account/email')
}
try {
$emailCanonical = new EmailCanonical($email);
$emailValidator = new EmailValidator($email);
} catch (Throwable) {
$emailCanonical = null;
$emailValidator = null;
}
$user
->setAttribute('email', $email)
->setAttribute('emailVerification', false) // After this user needs to confirm mail again
->setAttribute('emailCanonical', $emailCanonical?->getCanonical())
->setAttribute('emailIsCanonical', $emailCanonical?->isCanonicalSupported())
->setAttribute('emailIsCorporate', $emailCanonical?->isCorporate())
->setAttribute('emailIsDisposable', $emailCanonical?->isDisposable())
->setAttribute('emailIsFree', $emailCanonical?->isFree())
->setAttribute('emailCanonical', $emailValidator?->getCanonical())
->setAttribute('emailIsCanonical', $emailValidator?->isCanonicalSupported())
->setAttribute('emailIsCorporate', $emailValidator?->isCorporate())
->setAttribute('emailIsDisposable', $emailValidator?->isDisposable())
->setAttribute('emailIsFree', $emailValidator?->isFree())
;
if (empty($passwordUpdate)) {
+8 -8
View File
@@ -48,7 +48,7 @@ use Utopia\Database\Validator\Query\Cursor;
use Utopia\Database\Validator\Query\Limit;
use Utopia\Database\Validator\Query\Offset;
use Utopia\Database\Validator\UID;
use Utopia\Emails\Email as EmailCanonical;
use Utopia\Emails\Email as EmailValidator;
use Utopia\Locale\Locale;
use Utopia\System\System;
use Utopia\Validator\ArrayList;
@@ -568,9 +568,9 @@ App::post('/v1/teams/:teamId/memberships')
}
try {
$emailCanonical = new EmailCanonical($email);
$emailValidator = new EmailValidator($email);
} catch (Throwable) {
$emailCanonical = null;
$emailValidator = null;
}
$userId = ID::unique();
@@ -605,11 +605,11 @@ App::post('/v1/teams/:teamId/memberships')
'tokens' => null,
'memberships' => null,
'search' => implode(' ', [$userId, $email, $name]),
'emailCanonical' => $emailCanonical?->getCanonical(),
'emailIsCanonical' => $emailCanonical?->isCanonicalSupported(),
'emailIsCorporate' => $emailCanonical?->isCorporate(),
'emailIsDisposable' => $emailCanonical?->isDisposable(),
'emailIsFree' => $emailCanonical?->isFree(),
'emailCanonical' => $emailValidator?->getCanonical(),
'emailIsCanonical' => $emailValidator?->isCanonicalSupported(),
'emailIsCorporate' => $emailValidator?->isCorporate(),
'emailIsDisposable' => $emailValidator?->isDisposable(),
'emailIsFree' => $emailValidator?->isFree(),
]);
try {
+15 -15
View File
@@ -49,7 +49,7 @@ use Utopia\Database\Validator\Query\Cursor;
use Utopia\Database\Validator\Query\Limit;
use Utopia\Database\Validator\Query\Offset;
use Utopia\Database\Validator\UID;
use Utopia\Emails\Email as EmailCanonical;
use Utopia\Emails\Email as EmailValidator;
use Utopia\Locale\Locale;
use Utopia\System\System;
use Utopia\Validator\ArrayList;
@@ -99,9 +99,9 @@ function createUser(string $hash, mixed $hashOptions, string $userId, ?string $e
}
try {
$emailCanonical = new EmailCanonical($email);
$emailValidator = new EmailValidator($email);
} catch (Throwable) {
$emailCanonical = null;
$emailValidator = null;
}
$password = (!empty($password)) ? ($hash === 'plaintext' ? Auth::passwordHash($password, $hash, $hashOptionsObject) : $password) : null;
@@ -131,11 +131,11 @@ function createUser(string $hash, mixed $hashOptions, string $userId, ?string $e
'tokens' => null,
'memberships' => null,
'search' => implode(' ', [$userId, $email, $phone, $name]),
'emailCanonical' => $emailCanonical?->getCanonical(),
'emailIsCanonical' => $emailCanonical?->isCanonicalSupported(),
'emailIsCorporate' => $emailCanonical?->isCorporate(),
'emailIsDisposable' => $emailCanonical?->isDisposable(),
'emailIsFree' => $emailCanonical?->isFree(),
'emailCanonical' => $emailValidator?->getCanonical(),
'emailIsCanonical' => $emailValidator?->isCanonicalSupported(),
'emailIsCorporate' => $emailValidator?->isCorporate(),
'emailIsDisposable' => $emailValidator?->isDisposable(),
'emailIsFree' => $emailValidator?->isFree(),
]);
if ($hash === 'plaintext') {
@@ -1450,19 +1450,19 @@ App::patch('/v1/users/:userId/email')
$oldEmail = $user->getAttribute('email');
try {
$emailCanonical = new EmailCanonical($email);
$emailValidator = new EmailValidator($email);
} catch (Throwable) {
$emailCanonical = null;
$emailValidator = null;
}
$user
->setAttribute('email', $email)
->setAttribute('emailVerification', false)
->setAttribute('emailCanonical', $emailCanonical?->getCanonical())
->setAttribute('emailIsCanonical', $emailCanonical?->isCanonicalSupported())
->setAttribute('emailIsCorporate', $emailCanonical?->isCorporate())
->setAttribute('emailIsDisposable', $emailCanonical?->isDisposable())
->setAttribute('emailIsFree', $emailCanonical?->isFree())
->setAttribute('emailCanonical', $emailValidator?->getCanonical())
->setAttribute('emailIsCanonical', $emailValidator?->isCanonicalSupported())
->setAttribute('emailIsCorporate', $emailValidator?->isCorporate())
->setAttribute('emailIsDisposable', $emailValidator?->isDisposable())
->setAttribute('emailIsFree', $emailValidator?->isFree())
;
try {