Connexion par numéro de téléphone laravel 8

21289 단어
Laravel est un framework d'artisan qui nous facilite la conception et le development Rapide d'un projet.

Cependant lorsqu'il s'agit de la gestion de l'authentification, laravel nous fournit une déjà configurée, celle nous permettant de se connecter par email bien sûr.

Imaginer que vous devez developer un produit dont le client veut que l'authentification soit par téléphone.
Oui vous serez conseiller de créer votre propre 인증. Uhm n'est-ce pas un travail double ?

Dans cet article je vous suggère une autre façon qui m'a permis de changer l'authentification par défaut de laravel, juste en changeant quelques lignes de code.
Pour cela nous allons partir d'un nouveau projet laravel.

Etape1: 창작 뒤 프로젝트



Composer create-project --prefer-dist laravel/laravel mobile-authentication

Etape2: 일반 인증



PHP artisan make:auth

Etape3: Editer la 마이그레이션 사용자



Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
        $table->string('name');
         $table->string('email')->unique()->nullable();
 $table->string('telphone')->unique();
 $table->string('password');
 $table->rememberToken();$table->timestamps();
                            });

참고: ic nous avons ajouter nullable email, pour que ce dernier ne soit pas exiger dans le remplissage de la table.
실내 테이퍼 라 커맨드

php artisan migrate


Etape4: 수정자 파일 미들웨어 RedirectIfAuthenticated



Copiez ce bout de code dans votre middleware.

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    /**
         * Handle an incoming request.
         *      *
     * @param  \Illuminate\Http\Request  $request
     *      * @param  \Closure  $next
     * @param  string|null  $guard
     *      * @return mixed
     */
     *    public function handle($request, Closure $next, $guard = null)
     *        {
     *                if (Auth::check()) {
     *                            return redirect('/home');
     *                                    }
        return $next($request);
            }
            }



Etape 5: 수식어 le controlur



Maintenant faisons quelques changements dans notre Controller loginController

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\User;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
        $this->user = new User;
    }

    public function login(Request $request)
    {
        //validation du numéro de téléphone, 
        Vous pouvez changer à vos préférences. 

        $this->validate($request, [
            'phone' => 'required|regex:/[0-9]{10}/|digits:10',   

        ]);

        // Get user record
        $user = User::where('phone', $request->get('phone'))->first();

        // vérifier l'existence du mot de passe
        if($request->get('phone') != $user->phone) {
            \Session::put('errors', 'numéro de téléphone introuvable.!!');
            return back();
        }        

        // Set Auth Details
        \Auth::login($user);

        // Redirect home page
        return redirect()->route('home');
    }
}



Dans ce cas nous validons le numéro avec le nombre total de 10 chiffres. Vous pouvez améliorer cette validation à vos préférences.

Étape 6: 수정 du fichier 블레이드 로그인



Modifions notre blade d'enregistrement afin de pouvoir réagir en cas d'erreur.

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Login</div>

                <div class="panel-body">
                    <form class="form-horizontal" method="POST" action="{{ route('login') }}">
                        {{ csrf_field() }}
                        <div class="form-group{{ $errors->has('phone ') ? ' has-error' : '' }}">
                            <label for="phone" class="col-md-4 control-label">Entrer le numéro de téléphone .</label>
                            <div class="col-md-6">
                                <input id="phone" type="text" class="form-control" name="phone" value="{{ old('phone') }}" required autofocus>
                                @if ($errors->has('phone'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('phone') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <div class="checkbox">
                                    <label>
                                        <input type="checkbox" name="remember" {{ old('remember') ? 'checked' : '' }}> Remember Me
                                    </label>
                                </div>
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-8 col-md-offset-4">
                                <button type="submit" class="btn btn-primary">
                                    Login
                                </button>

                                <a class="btn btn-link" href="{{ route('password.request') }}">
                                    Forgot Your Password?
                                </a>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection




Nous voilà avec une connexion par téléphone bien gérée, sans pour autant recommencer tout à zero.
J'espère que l'article vous a été utile. N'oubliez pas de vous abonner pour ne pas manquer mon prochain 기사.

좋은 웹페이지 즐겨찾기