Vous pouvez étendre Illuminate \ Auth \ EloquentUserProvider, à savoir:
<?php
namespace App\Services\Auth;
use Illuminate\Auth\EloquentUserProvider as BaseUserProvider;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;
class UserProvider extends BaseUserProvider {
/**
* Create a new database user provider.
*
* @param string $model
*
* @return void
*/
public function __construct($model)
{
$this->model = $model;
}
/**
* Validate a user against the given credentials.
*
* @param \Illuminate\Contracts\Auth\Authenticatable $user
* @param array $credentials
*
* @return bool
*/
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];
// $matches = some method of matching $plain with $user->getAuthPassword();
return $matches;
}
}
Alors inscrivez-vous cela dans le IoC dans un fournisseur de services comme ceci:
<?php // ...
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
// ...
$this->app['auth']->extend(
'legacy',
function() {
return new \Illuminate\Auth\Guard(
new \App\Services\Auth\UserProvider(
$this->app['config']['auth.model']
),
$this->app['session.store']
);
}
);
// ...
}
Ensuite, configurez votre pilote actuel à l'héritage dans config/auth.php.
PS: Vous pouvez inclure les classes dans le fournisseur,
Oh non: Encore une faille de sécurité dans le futur. – zaph
N'utilisez jamais de mot de passe en texte brut dans la base de données. –