]> Kevux Git Server - koopa/commitdiff
Update: implement account not available or access not available in database
authorKevin Day <thekevinday@gmail.com>
Sat, 3 Feb 2018 03:56:14 +0000 (21:56 -0600)
committerKevin Day <thekevinday@gmail.com>
Sat, 3 Feb 2018 03:56:14 +0000 (21:56 -0600)
When the account is not in the database or the account has insufficient privileges to access the database, an error needs to be reported.
A new error category is created to handle this with a separate message.

common/base/classes/base_error.php
common/base/classes/base_error_messages_english.php
common/base/classes/base_error_messages_japanese.php
common/standard/classes/standard_index.php

index f2ea8af36830c39f4739f4a302b0643ea3f33bbf..f40bcdc83a8b6fe4fba5df854b7c17d91004bdf1 100644 (file)
@@ -592,15 +592,16 @@ interface i_base_error_messages {
   const NO_SESSION                    = 15;
   const NO_SUPPORT                    = 16;
   const POSTGRESQL_CONNECTION_FAILURE = 17;
-  const POSTGRESQL_NO_CONNECTION      = 18;
-  const POSTGRESQL_NO_RESOURCE        = 19;
-  const POSTGRESQL_ERROR              = 20;
-  const SOCKET_FAILURE                = 21;
-  const ACCESS_DENIED                 = 22;
-  const ACCESS_DENIED_UNAVAILABLE     = 23;
-  const ACCESS_DENIED_USER            = 24;
-  const ACCESS_DENIED_ADMINISTRATION  = 25;
-  const SERVER_ERROR                  = 26;
+  const POSTGRESQL_NO_ACCOUNT         = 18;
+  const POSTGRESQL_NO_CONNECTION      = 19;
+  const POSTGRESQL_NO_RESOURCE        = 20;
+  const POSTGRESQL_ERROR              = 21;
+  const SOCKET_FAILURE                = 22;
+  const ACCESS_DENIED                 = 23;
+  const ACCESS_DENIED_UNAVAILABLE     = 24;
+  const ACCESS_DENIED_USER            = 25;
+  const ACCESS_DENIED_ADMINISTRATION  = 26;
+  const SERVER_ERROR                  = 27;
 
 
   /**
index 33fd0909b3f31fd67853afdb59865806158d4b0a..281b659ded678a2e8806c2bb7ecbf5aadfb8726f 100644 (file)
@@ -255,6 +255,14 @@ final class c_base_error_messages_english implements i_base_error_messages {
         return c_base_return_string::s_new('Failed to connect to the database.');
       }
     }
+    elseif ($code === static::POSTGRESQL_NO_ACCOUNT) {
+      if ($arguments === TRUE) {
+        return c_base_return_string::s_new('Database access denied: the account :{database_account} does not exist or does not have the required access' . $function_name_string . '.');
+      }
+      else {
+        return c_base_return_string::s_new('Database access denied: the account does not exist or does not have the required access.');
+      }
+    }
     elseif ($code === static::POSTGRESQL_NO_CONNECTION) {
       if ($arguments === TRUE) {
         return c_base_return_string::s_new('The database, :{database_name}, is not connected' . $function_name_string . '.');
index db9403ebbd4353b07d76720bb54c1d7df2e9fe18..ca71ccb762f478ff124b3099effbfbae568460b4 100644 (file)
@@ -260,6 +260,14 @@ final class c_base_error_messages_japanese implements i_base_error_messages {
         return c_base_return_string::s_new('データベースに接続できませんでした。');
       }
     }
+    elseif ($code === static::POSTGRESQL_NO_ACCOUNT) {
+      if ($arguments === TRUE) {
+        return c_base_return_string::s_new('データベースアクセスが拒否されました:アカウント:{database_account}が存在しないか、必要なアクセス権' . (is_null($function_name_string) ? '' : '、') . $function_name_string . '。');
+      }
+      else {
+        return c_base_return_string::s_new('データベースアクセスが拒否されました:アカウントが存在しないか、必要なアクセス権がありません ');
+      }
+    }
     elseif ($code === static::POSTGRESQL_NO_CONNECTION) {
       if ($arguments === TRUE) {
         return c_base_return_string::s_new('データベース :{database_name} は接続されていません' . (is_null($function_name_string) ? '' : '、') . $function_name_string . '。');
index fc405a3e08126090dc53ca6a3fc424001fa643d5..299484f3aa89768bb5839da26fc25bbc09609f75 100644 (file)
@@ -545,7 +545,8 @@ class c_standard_index extends c_base_return {
       $this->session->set_user_current($user_current);
     }
     else {
-      // @todo: handle errors.
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{account_name}' => $last_error, ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::POSTGRESQL_NO_ACCOUNT);
+      return c_base_return_error::s_false($error);
     }
     unset($user_current);
 
@@ -601,9 +602,11 @@ class c_standard_index extends c_base_return {
     }
 
     if (c_base_return::s_has_error($connected)) {
+      $this->session->set_error($connected->get_error());
       unset($connected);
-
-      $executed = $paths->get_handler_server_error($this->http, $this->database, $this->session, $this->settings);
+      $error_page = $paths->get_handler_server_error($this->http, $this->database, $this->session, $this->settings);
+      $executed = $error_page->do_execute($this->http, $this->database, $this->session, $this->settings);
+      unset($error_page);
     }
     else {
       unset($connected);