Как переопределить функцию logoutOtherDevices() в Laravel

#laravel #session #overriding #logout

#laravel #сессия #переопределение #Выход

Вопрос:

Я сталкиваюсь с некоторой проблемой переопределения функции в Laravel. Это функция logoutOtherDevices в папке поставщика (IlluminateAuth SessionGuard) в laravel. Я хочу передать a $user_name в этой функции, чтобы разрешить некоторым пользователям многократный вход в систему.

 public function logoutOtherDevices($password, $user_name, $attribute = 'password')
        {
            if (! $this->user() || $this->user()->user_name == $user_name) {
                return;
            }
    
            $result = tap($this->user()->forceFill([
                $attribute => Hash::make($password),
            ]))->save();
    
            $this->queueRecallerCookie($this->user());
    
            return $result;
        }
  

Но поскольку это находится в папке поставщика, поэтому я не хочу редактировать код в основном файле.

Может ли кто-нибудь дать мне некоторые рекомендации по переопределению этой функции в LoginController?

Потому что я планирую добавить некоторое условие для завершения сеанса пользователя на другом устройстве.

Ценю все предложения и рекомендации.

Комментарии:

1. Это SessionGuard макросовместимый, вы можете добавлять к нему методы во время выполнения, и LoginController он ваш, чтобы вы могли настроить, что LoginController потенциально вызывает

2. может быть, вы можете уточнить эти условия и то, что вы пытаетесь сделать, отличается

3. @lagbox спасибо за ответ, братан, я пытался создать условие, которое передает $user_name в этой функции, чтобы разрешить некоторым пользователям многократный вход в систему.

4. вы можете создать свою собственную версию этого метода так, как вы этого хотите, а затем вызвать свою версию из LoginController