Procházet zdrojové kódy

Update Admin\Update page

Add a blank password situation for a database.
Visman před 3 roky
rodič
revize
43f672cf85
1 změnil soubory, kde provedl 18 přidání a 3 odebrání
  1. 18 3
      app/Models/Pages/Admin/Update.php

+ 18 - 3
app/Models/Pages/Admin/Update.php

@@ -33,6 +33,12 @@ class Update extends Admin
 
     protected $configFile;
 
+    /**
+     * Флаг проверки пароля
+     * @var bool
+     */
+    protected $okPass;
+
     public function __construct(Container $container)
     {
         parent::__construct($container);
@@ -139,7 +145,7 @@ class Update extends Admin
                     'check_pass' => [$this, 'vCheckPass'],
                 ])->addRules([
                     'token'                 => 'token:AdminUpdate',
-                    'dbpass'                => 'required|string:trim|check_pass',
+                    'dbpass'                => 'string|check_pass',
                     'o_maintenance_message' => 'required|string:trim|max:65000 bytes|html',
                 ])->addAliases([
                     'dbpass'                => 'Database password',
@@ -147,7 +153,10 @@ class Update extends Admin
                 ])->addMessages([
                 ]);
 
-                if ($v->validation($_POST)) {
+                if (
+                    $v->validation($_POST)
+                    && $this->okPass
+                ) {
                     $e = null;
 
                     // версия PHP
@@ -264,12 +273,19 @@ class Update extends Admin
      */
     public function vCheckPass(Validator $v, $dbpass)
     {
+        $dbpass       = $dbpass ?? '';
+        $this->okPass = true;
+
         if (\substr($this->c->DB_DSN, 0, 6) === 'sqlite') {
             if (! \hash_equals($this->c->DB_DSN, "sqlite:{$dbpass}")) {  // ????
+                $this->okPass = false;
+
                 $v->addError(['Invalid file error', self::CONFIG_FILE]);
             }
         } else {
             if (! \hash_equals($this->c->DB_PASSWORD, $dbpass)) {
+                $this->okPass = false;
+
                 $v->addError(['Invalid password error', self::CONFIG_FILE]);
             }
         }
@@ -303,7 +319,6 @@ class Update extends Admin
                             'value'    => '',
                             'caption'  => 'Database password',
                             'help'     => 'Database password note',
-                            'required' => true,
                         ],
                         'o_maintenance_message' => [
                             'type'     => 'textarea',