Вход с использованием паспорта с паролем в соответствующей таблице laravel 6 - PullRequest
0 голосов
/ 05 февраля 2020

Я использую vue для внешнего интерфейса и laravel в качестве внутренних служб.

В моем случае у меня есть две таблицы contacts и contact_has_entities.

Мои контакты Таблица:

contact_id        name         email

И contact_has_entities Таблица:

id_contact_has_entity      contact_idcontact         password 

contact_idcontact - это внешний ключ для таблицы contacts .

Я использую passport package для аутентификации. Когда приходит запрос на вход, мне нужно проверить email из контактов таблицы и password из contact_has_entities таблицы.

Я использовал приведенную ниже функцию

 public function getAuthPassword() { 
    return ContactHasEntity::where('password', $this->password)->first();
 }

В моей модели контактов я определил отношения, как показано ниже:

public function entity() {
    return $this->hasOne('App\Models\ContactHasEntity', 'contact_idcontact', 'contact_id');
}

Но я получаю ошибку вроде

getAuthPassword не существует

В любом случае, достичь этого или вообще невозможно с помощью паспорта? Пожалуйста, помогите ....

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Ниже функция в моей модели Contact сделала работу:

public function getPasswordAttribute() {
    return $this->entity->getAttribute('password');
}

Здесь я добавил функцию для использования поля пароля из ContactHasEntity модели.

0 голосов
/ 05 февраля 2020

С указанным выше отношением, определенным ниже, должно работать:

  1. Получите доступ к модели контактов и запросите через отношение модель объектов, как показано ниже:

    Contacts::whereHas('entity', function ($query) { 
        return $query->where('password', $this->password);
    })->first()`;
    
  2. Или в контактах определите область запроса:

    public function scopeAuthPassword($query, $password)
    {
        return $query->entity()->where('password', $password);
    }
    

    //, которая будет переводиться на это, когда:

    Contacts::authPassword($request->password)->first()
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...