Я использую jenssegers / laravel -mongodb для моего laravel приложения.
И я хочу войти в свой проект. Итак, у меня есть коллекция entities
. Моя коллекция entities
выглядит следующим образом:
{
"_id" : ObjectId("5e42938b140af6052038f274"),
"designation" : "Skills",
"type" : "affiliate",
"contact" : [
{
"firstname" : "Vino",
"lastname" : "Neha",
"email" : "vinothini@gmail.com",
"password" : "$2y$10$jnoXRxW4jkB76aXGY84faukJdo6zmZngot8AscYP8OYGr4u8m55Fa"
},
{
"firstname" : "Astha",
"lastname" : "Goswami",
"email" : "astha@gmail.com",
"password" : "$2y$10$Kr0VlDWRnRYKINs.f0GgWup7VRF3jEIRXgZytvUbij8n6G1g45i0."
}
]
}
Я использую модель для коллекции entities
, и я хочу использовать эту модель и для входа в систему. Вот как выглядит моя Entity
модель:
<?php
namespace App\Models;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
use Laravel\Passport\HasApiTokens;
use Jenssegers\Mongodb\Auth\User as Authenticatable;
class Entity extends Authenticatable
{
use HasApiTokens;
public function contacts() {
return $this->embedsMany('Contact'); // To get subdocument "contact"
}
/**
* For authentication take email column from contact subdocument
*
* @return string|null
*/
public function getEmailAttribute() {
return $this->contacts->getAttribute('email');
}
/**
* For authentication take password column from contact subdocument
*
* @return string|null
*/
public function getPasswordAttribute() {
return $this->contacts->getAttribute('password');
}
}
Здесь я пытаюсь выполнить вход с помощью:
Auth::guard('web')->attempt(['email' => $request->email, 'password' => $request->password])
Ниже мой файл auth.php
:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'entity',
],
'api' => [
'driver' => 'passport',
'provider' => 'entity',
],
],
'providers' => [
'entity' => [
'driver' => 'eloquent',
'model' => App\Models\Entity::class,
'hash' => false,
],
],
Этот проект предназначен только для API. Так что я использую паспорт здесь.
Я хочу проверить электронную почту и пароль с поддокументом. Я говорю модели взять пароль и электронную почту из вложенного документа, упомянув getPasswordAttribute
и getEmailAttribute
в моей модели.
И я использую функцию contacts()
в моей модели, чтобы получить значение из вложенного документа.
Моя проблема в том, что я не могу войти. Результат всегда ложная форма Auth::attempt
.
Понятия не имею, как это сделать. Пожалуйста, помогите ....