За последние 24 часа нас посетили 8768 программистов и 1061 робот. Сейчас ищет 421 программист ...

Проверяем авторизацию

Тема в разделе "PHP для новичков", создана пользователем Вероломство, 30 авг 2022.

  1. Вероломство

    [ БАН ]

    С нами с:
    19 июн 2017
    Сообщения:
    573
    Симпатии:
    19
    PHP:
    1. <?php
    2.  
    3.  
    4. namespace application\support;
    5.  
    6.  
    7. use application\models\User;
    8. use core\services\Container;
    9.  
    10. class Authorization
    11. {
    12.     private $container;
    13.  
    14.     public function __construct(Container $container)
    15.     {
    16.         $this->container = $container;
    17.     }
    18.  
    19.     public function check()
    20.     {
    21.         if (isset($_SESSION['authorization'])) {
    22.  
    23.             if ($user = User::findOneBy('`id` = ? && `token` = ?', $_SESSION['authorization'])) {
    24.                 $this->container->set(User::class, $user);
    25.  
    26.                 return true;
    27.             }
    28.  
    29.             unset($_SESSION['authorization']);
    30.         }
    31.  
    32.         return false;
    33.     }
    34. }
    То есть я помещаю данные User::class в контейнер ТОЛЬКО после проверки данных в сессии.

    А может быть его нужно поместить в контейнер раньше где-то в промежуточном ПО, чтобы данные User::class были доступны не только после того, как их туда поместил класс Authorization (и не пробрасывать в него контейнер :()?

    Может быть это должно быть вот так?

    PHP:
    1. <?php
    2.  
    3.  
    4. namespace application\support;
    5.  
    6.  
    7. use application\models\User;
    8.  
    9. class Authorization
    10. {
    11.     private $user;
    12.  
    13.     public function __construct(User $user)
    14.     {
    15.         $this->user= $user;
    16.     }
    17.  
    18.     public function check()
    19.     {
    20.         if (isset($_SESSION['authorization'])) {
    21.  
    22.             if ($user) {
    23.                 return true;
    24.             }
    25.  
    26.             unset($_SESSION['authorization']);
    27.         }
    28.  
    29.         return false;
    30.     }
    31. }
    А?