Bonsoir à tous,
Je suis en train de suivre le tuto de laravel 5.0 mais à l'heure actuelle on est à la version 5.6 il y a eu évidemment quelques changements depuis, Depuis le début Ça ne m'a pas posé de problème juste que arriver aux travaux pratiques "TP2 : Gestion des utilisateurs" C'est au moment de connecter l'utilisateur avec son pseudo qui est le champ name, le code de laravel a été amélioré et a vraiment changé sa structure par rapport à celle qu'on peut suivre dans le cours, j'ai donc fait des recherches sur Internet et je suis tombé sur quelques sujets qui avaient le même problème que moi je viens donc partager les modifications que j'ai apportées pour connecter d'utilisateurs avec son e-mail et son pseudo.
Dans App\Http\Controller\Auth\LoginController.php
Ajoutez ce code ci-dessous
/**
/**
* Check either username or email.
* @return string
*/
public function username()
{
$identity = request()->get('identity');
$fieldName = filter_var($identity, FILTER_VALIDATE_EMAIL) ? 'email' : 'name';
request()->merge([$fieldName => $identity]);
return $fieldName;
}
/**
* Validate the user login.
* @param Request $request
*/
protected function validateLogin(Request $request)
{
$this->validate($request, [
'identity' => 'required|string',
'password' => 'required|string',
]);
}
/**
* @param Request $request
* @throws ValidationException
*/
protected function sendFailedLoginResponse(Request $request)
{
$request->session()->flash('login_error', trans('auth.failed'));
throw ValidationException::withMessages(
[
'error' => [trans('auth.failed')],
]
);
}
Moi j'ai comme habitude d'inclure les erreurs directement de mon formulaire c'est à vous de voir, Mais le plus important se trouve dans la fonction username()
La vue login.blade.php
<div class="form-group row">
<label for="identity" class="col-sm-4 col-form-label text-md-right">{{ __('Utilisateur ou E-Mail') }}</label>
<div class="col-md-6">
<input id="identity" type="text" class="form-control{{ $errors->has('identity') ? ' is-invalid' : '' }}" name="identity" value="{{ old('identity') }}" required autofocus>
@if ($errors->has('identity'))
<span class="invalid-feedback">
<strong>{{ $errors->first('identity') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Mot de passe') }}</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>
@if ($errors->has('password'))
<span class="invalid-feedback">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>
Et le petit message erreur Ces identifiants ne correspondent pas à nos enregistrements
@if(session()->has('login_error'))
<div class="alert alert-danger">
{{ session()->get('login_error') }}
</div>
@endif
Il y a plusieurs façons de l'adapter Pour moi cette façon était la plus optimale que j'ai trouvée, Si vous avez d'autres idées n'hésitez pas de les partager !
À bientôt sur le forum.
Si tu veux une vidéo sur le nouveau système de login je te conseille celle-ci. Elle utilise les derniers changement de Laravel : https://www.grafikart.fr/tutoriels/laravel/confirmation-compte-824
Merci je vais regarder
Je vient de regarder la vidéo, génial le système d'envoi email