Przeglądaj źródła

Update Validator\Email

Visman 4 lat temu
rodzic
commit
41126079f7
1 zmienionych plików z 11 dodań i 18 usunięć
  1. 11 18
      app/Models/Validators/Email.php

+ 11 - 18
app/Models/Validators/Email.php

@@ -19,8 +19,6 @@ class Email extends RulesValidator
 {
     /**
      * Проверяет email
-     * WARNING!!!
-     * Если 4-ым параметром передан гость, то проверка уникальности email не проводится
      *
      * @param Validator $v
      * @param string $email
@@ -52,8 +50,6 @@ class Email extends RulesValidator
         $email = $result;
         $attrs = \array_flip(\explode(',', $attrs));
         $ok    = true;
-        $user  = $this->c->users->create();
-        $user->__email = $email;
 
         // провеерка бана email
         if (
@@ -63,7 +59,9 @@ class Email extends RulesValidator
                 || isset($attrs['nosoloban'])
             )
         ) {
-            $banType = $this->c->bans->isBanned($user);
+            $banType = $this->c->bans->isBanned(
+                $this->c->users->create(['email' => $email])
+            );
 
             if (
                 $banType > 0
@@ -95,25 +93,19 @@ class Email extends RulesValidator
         if (
             $ok
             && isset($attrs['unique'])
-            && (
-                ! $originalUser instanceof User
-                || ! $originalUser->isGuest
-            )
         ) {
-            if ($user->isGuest) {
-                $user = $this->c->users->loadByEmail($email);
-            }
+            $user = $this->c->users->loadByEmail($email); // ???? exists и unique вместе же не должны встречаться!? O_o
 
             if (
                 $user instanceof User
-                && $originalUser instanceof User
-                && $user->id !== $originalUser->id
+                && (
+                    ! $originalUser instanceof User
+                    || $originalUser->isGuest
+                    || $user->id !== $originalUser->id
+                )
             ) {
-                $ok = false;
-            }
-
-            if (false === $ok) {
                 $v->addError('Dupe email');
+                $ok = false;
             }
         }
         // проверка на флуд интервал
@@ -134,6 +126,7 @@ class Email extends RulesValidator
             } else {
                 $flood = $this->c->FLOOD_INTERVAL;
             }
+
             if ($flood < $this->c->FLOOD_INTERVAL) {
                 $v->addError(__('Account email flood', (int) (($this->c->FLOOD_INTERVAL - $flood) / 60)), 'e');
                 $ok = false;