src/Logging/Activity/AccessAPILog.php line 19

Open in your IDE?
  1. <?php
  2. //----------------------------------------------------------------------
  3. // src/Logging/AccessLog.php
  4. //----------------------------------------------------------------------
  5. namespace App\Logging\Activity;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use App\Entity\APIRest\AccessAPI;
  8. use App\Logging\Tools;
  9. use App\Services\LogTools;
  10. class AccessAPILog
  11. {
  12.     private array $pendingLogArgs = [];
  13.     public function __construct(ManagerRegistry $doctrineLogTools $logToolsTools $tools)
  14.     {
  15.         $this->em $doctrine->getManager();
  16.         $this->logTools $logTools;
  17.         $this->tools $tools;
  18.     }
  19.     public function logCreation(AccessAPI $access)
  20.     {
  21.         $pendingLogArgs = [];
  22.         //----------------------------------------------------------------------
  23.         // Fetch eventual info stored in the object
  24.         $loggingData $this->logTools->handleLoggingData($access);
  25.         $info $loggingData['info'];
  26.         $specialAuthor $loggingData['special_author'];
  27.         $ignore $loggingData['ignore'];
  28.         if ($ignore) return $pendingLogArgs;
  29.         //----------------------------------------------------------------------
  30.         // Init base log args
  31.         // This does not contain action
  32.         $args $this->initArgs($access$loggingData);
  33.         //----------------------------------------------------------------------
  34.         if($access->getAccess() !== null)
  35.         {
  36.             $action "access_api_add";
  37.         }
  38.         else
  39.         {
  40.             $action "access_apirest_add";
  41.         }
  42.         $args["action"] = $action;
  43.         $pendingLogArgs[] = $args;
  44.         return $pendingLogArgs;
  45.     }
  46.     public function logChanges(AccessAPI $access$changes)
  47.     {
  48.         $pendingLogArgs = [];
  49.         //----------------------------------------------------------------------
  50.         // Fetch eventual info skeletond in the object
  51.         $loggingData $this->logTools->handleLoggingData($access);
  52.         $info $loggingData['info'];
  53.         $specialAuthor $loggingData['special_author'];
  54.         $ignore $loggingData['ignore'];
  55.         if ($ignore) return $pendingLogArgs;
  56.         //----------------------------------------------------------------------
  57.         // Init base log args
  58.         // This does not contain action
  59.         $args $this->initArgs($access$loggingData);
  60.         //----------------------------------------------------------------------
  61.         
  62.         if($access->getAccess() !== null)
  63.         {
  64.             $action "access_api_edit";
  65.         }
  66.         else
  67.         {
  68.             $action "access_apirest_edit";
  69.         }
  70.         $basicChanges = array(
  71.             "password",
  72.         );
  73.         $basicBoolChanges = array(
  74.             "isActive",
  75.         );
  76.         $dateChanges = array(
  77.         );
  78.         $labelChanges = array(
  79.         );
  80.         // Method getLogLabel() should be defined for these objects/entities
  81.         $objectChanges = array(
  82.         );
  83.         // See what changed and log (members first)
  84.         foreach ($changes as $key => $change)
  85.         {
  86.             // Something to skip ?
  87.             if (false)
  88.             {
  89.                 continue;
  90.             }
  91.             $name $this->logTools->camelToSnakeCase($key);
  92.             $args["action"]    = $action."_".$name;
  93.             $before $change[0];
  94.             $after $change[1];
  95.             if (in_array($key$basicChanges))
  96.             {
  97.                 $args $this->tools->handleBasicChanges($args$before$after);
  98.                 if ($key == "password")
  99.                 {
  100.                     $args['old_value'] = null;
  101.                     $args['new_value'] = null;
  102.                 }
  103.                 $pendingLogArgs[] = $args;
  104.                 continue;
  105.             }
  106.             if (in_array($key$basicBoolChanges))
  107.             {
  108.                 $args $this->tools->handleBasicBoolChanges($args$before$after);
  109.                 if ($key == "isActive")
  110.                 {
  111.                     if (!$before && $after)
  112.                     {
  113.                         if($access->getAccess() !== null)
  114.                         {
  115.                             $args['action'] = "access_api_activate";
  116.                         }
  117.                         else
  118.                         {
  119.                             $args['action'] = "access_apirest_activate";
  120.                         }
  121.                     }
  122.                     if ($before && !$after)
  123.                     {
  124.                         if($access->getAccess() !== null)
  125.                         {
  126.                             $args['action'] = "access_api_deactivate";
  127.                         }
  128.                         else
  129.                         {
  130.                             $args['action'] = "access_apirest_deactivate";
  131.                         }
  132.                     }
  133.                     $args['old_value'] = null;
  134.                     $args['new_value'] = null;
  135.                 }
  136.                 $pendingLogArgs[] = $args;
  137.                 continue;
  138.             }
  139.             if (in_array($key$dateChanges))
  140.             {
  141.                 // dateChanges can be null
  142.                 $changeLogs $this->tools->handleDateChanges($args$before$after);
  143.                 if ($changeLogs !== null$pendingLogArgs[] = $changeLogs;
  144.                 continue;
  145.             }
  146.             if (in_array($key$labelChanges))
  147.             {
  148.                 $pendingLogArgs[] = $this->tools->handleLabelChanges($args$before$after);
  149.                 continue;
  150.             }
  151.             if (in_array($key$objectChanges))
  152.             {
  153.                 $pendingLogArgs[] = $this->tools->handleObjectChanges($args$before$after);
  154.                 continue;
  155.             }
  156.         }
  157.         return $pendingLogArgs;
  158.     }
  159.     public function logRemoval(AccessAPI $access)
  160.     {
  161.         // Skip anything without ROLE_USER
  162.         //if (!$access->getAccess()->isUser()) return [];
  163.         $pendingLogArgs = [];
  164.         //----------------------------------------------------------------------
  165.         // Fetch eventual info skeletond in the object
  166.         $loggingData $this->logTools->handleLoggingData($access);
  167.         $info $loggingData['info'];
  168.         $specialAuthor $loggingData['special_author'];
  169.         $ignore $loggingData['ignore'];
  170.         if ($ignore) return $pendingLogArgs;
  171.         //----------------------------------------------------------------------
  172.         // Init base log args
  173.         // This does not contain action
  174.         $args $this->initArgs($access$loggingData);
  175.         //----------------------------------------------------------------------
  176.         if($access->getAccess() !== null)
  177.         {
  178.             $args["action"] = "access_api_delete";
  179.         }
  180.         else
  181.         {
  182.             $args["action"] = "access_apirest_delete";
  183.         }    
  184.         $pendingLogArgs[] = $args;
  185.         return $pendingLogArgs;
  186.     }
  187.     private function initArgs(AccessAPI $accessApi$loggingData)
  188.     {
  189.         $society null;
  190.         $societyGroup null;
  191.         $access $accessApi->getAccess();
  192.         if ($access !== null)
  193.         {
  194.             $society $access->getSociety();
  195.             $societyGroup $access->getSocietyGroup();
  196.         }
  197.         else
  198.         {
  199.             $society $accessApi->getSociety();
  200.             $societyGroup $accessApi->getSocietyGroup();
  201.         }
  202.         $args = array(
  203.             "object_id"                    =>    $accessApi->getId(),
  204.             "object_bundle"                =>    "APIRest",
  205.             "object_entity"                =>    "AccessAPI",
  206.             "object_display"            =>    $accessApi->display(),
  207.             "society_group"                =>    $societyGroup,
  208.             "society"                    =>    $society,
  209.             "info"                        =>    $loggingData['info'],
  210.             "special_author"            =>    $loggingData['special_author'],
  211.         );
  212.         return $args;
  213.     }
  214. }