2014-09-28 4 views
0

Я новичок в Laravel, просто играю с ним и возвращаюсь обратно в MVC.Laravel Use Eloquent model от пользовательского UserServiceProvider

Я пытаюсь сделать свой собственный пользовательский провайдер аутентификации (настраиваемое хеширование паролей) в качестве службы, которая реализует UserProviderInterface в Laravel.

Внутри приложение/контроллеры/Account.php:

public function postCreate() { 
    Auth::attempt(Input::all()); 
} 

У меня есть приложение маршрутизации Auth :: попытку через мой пользовательский класс поставщика, и проходящее мне Вход :: все из формы в метод retrieveByCredentials ,

Внутри приложения/услуги/PasswordHash/PasswordHashUserProvider.php:

public function retrieveByCredentials(array $credentials) { 
    // Why can't I do this? 
    //Error: PasswordHash/User not found 
    User::find($credentials['username']); 

    dd($credentials); 
} 

Я потерял в этот момент о том, как получить доступ к моим красноречивым моделям пользователей внутри этого класса обслуживания. Я пробовал пространства имен, но мне не повезло.

+0

Пробовали ли вы 'использование использовать App \ User;'? –

+0

Да, не работает. Я понял, что должен пропустить пустую модель пользователя в свой класс пароля и вызывать методы для создания моей модели пользователя. Теперь у меня есть запрос по имени пользователя. – kr094

ответ

0

Метод загрузки для поставщиков услуг использует контейнер службы для инъекций зависимостей. Для этого вы должны сделать следующее (не используя Facades, но часто не использую фасады).

class PasswordHashUserProvider extends ServiceProvider 
{ 
    protected $user; 

    public function boot(User $user) 
    { 
     $this->user = $user; 
    } 

} 

Вы можете получить доступ к пользователю через $this->user

Источник: https://laravel.com/docs/master/providers#the-boot-method