src/Services/Security/PasswordTools.php line 15

Open in your IDE?
  1. <?php
  2. //----------------------------------------------------------------------
  3. // src/Services/Security/PasswordTools.php
  4. //----------------------------------------------------------------------
  5. namespace App\Services\Security;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use App\Entity\Access;
  8. use App\Entity\Communication\Sms\Sms;
  9. use App\Services\LogTools;
  10. class PasswordTools
  11. {
  12.     public function __construct(ManagerRegistry $doctrineLogTools $logTools)
  13.     {
  14.         $this->em $doctrine->getManager();
  15.         $this->logTools $logTools;
  16.     }
  17.     // http://jaspreetchahal.org/php-random-password-generator-function/
  18.     public function generatePassword($length)
  19.     {
  20.         $lowercase "qwertyuiopasdfghjklzxcvbnm";
  21.         $uppercase "ASDFGHJKLZXCVBNMQWERTYUIOP";
  22.         $numbers "1234567890";
  23.         //$specialcharacters = "{}[];:,./<>?_+~!@#";
  24.         $specialcharacters "+!@#";
  25.         $randomCode "";
  26.         $length abs($length);
  27.         $lengthSlice $length 4;
  28.         $max strlen($lowercase) - 1;
  29.         for ($x 0$x $lengthSlice$x++)
  30.         {
  31.             $i random_int(0$max);
  32.             $randomCode .= $lowercase[$i];
  33.         }
  34.         $max strlen($uppercase) - 1;
  35.         for ($x 0$x $lengthSlice$x++)
  36.         {
  37.             $i random_int(0$max);
  38.             $randomCode .= $uppercase[$i];
  39.         }
  40.         $max strlen($specialcharacters) - 1;
  41.         for ($x 0$x abs($length/3); $x++)
  42.         {
  43.             $i random_int(0$max);
  44.             $randomCode .= $specialcharacters[$i];
  45.         }
  46.         $max strlen($numbers) - 1;
  47.         for ($x $lengthSlice 2$x $length$x++)
  48.         {
  49.             $i random_int(0$max);
  50.             $randomCode .= $numbers[$i];
  51.         }
  52.         return str_shuffle($randomCode);
  53.     }
  54.     public function generateAlphaNumCode($length)
  55.     {
  56.         $lowercase "qwertyuiopasdfghjklzxcvbnm";
  57.         $numbers "1234567890";
  58.         $randomCode "";
  59.         $length abs($length);
  60.         $lengthSlice $length 2;
  61.         $max strlen($lowercase) - 1;
  62.         for ($x 0$x $lengthSlice$x++)
  63.         {
  64.             $i random_int(0$max);
  65.             $randomCode .= $lowercase[$i];
  66.         }
  67.         $max strlen($numbers) - 1;
  68.         for ($x 0$x $lengthSlice$x++)
  69.         {
  70.             $i random_int(0$max);
  71.             $randomCode .= $numbers[$i];
  72.         }
  73.         return str_shuffle($randomCode);
  74.     }
  75.     public function isValidPassword($password)
  76.     {
  77.         $uppercase         preg_match('@[A-Z]@'$password);
  78.         $lowercase         preg_match('@[a-z]@'$password);
  79.         $number            preg_match('@[0-9]@'$password);
  80.         //$specialChars     = preg_match('@[^\w]@', $password);
  81.         if(!$uppercase || !$lowercase || !$number || strlen($password) < 8)
  82.         {
  83.             return false;
  84.         }
  85.         return true;
  86.     }
  87.     public function generateUniqueActivationCode()
  88.     {
  89.         $accessRep $this->em->getRepository(Access::class);
  90.         do {
  91.             $code $this->generateAlphaNumCode(20);
  92.             $doppelganger $accessRep->findOneByActivationCode($code);
  93.         }while ($doppelganger !== null);
  94.         return $code;
  95.     }
  96.     public function generateSmsClientResponseCode()
  97.     {
  98.         do
  99.         {
  100.             $code  $this->generateAlphaNumCode(20);
  101.             $doppelganger $this->em->getRepository(Sms::class)->findOneByClientResponseCode($code);
  102.             if ($doppelganger === null)
  103.             {
  104.                 return $code;
  105.             }
  106.         }while ($doppelganger !== null);
  107.     }
  108.     public function generateUniqId()
  109.     {
  110.         $uniqCode  uniqId('icod_');
  111.         return $uniqCode;
  112.     }
  113. }