الجزء الثاني Laravel Authentification


فهاد الجزء الثاني غادي نكملو الصفحة الرئيسية ديالنا ومنبعد نقادو الصفحة لي تمكن المستخدم من التسجيل فقاعدة البيانات والصفحة لي تمكنو من تسجيل الدخول ديالو باستعمال الإمايل وكلمة السر دسالو.

نظرة سريعة بالفيديو

- تكملة الصفحة الرئيسية

من بعد ما قادينا ل header و footer غادي نقادو الصفحة الرئيسية لي كاينة ف resources->views index.blade.php فالأول غادي نزيدو الملف لي كاين ف layouts->index-master.php من بعد كل جزء بوحدو title ثم styles ثم header ثم content ثم footer ثم scripts الكود النهائي غادي يكون :

                                @extends('layouts.index-master')
 
@section('title')
    Laravel Authentification
@endsection
 
@section('styles')
     
@endsection
 
@section('header')
   @include('includes.header')
@endsection
 
@section('content')
      <h1>Page principale</h1>
      @if(Auth::check())
        <p class="lead">Bienveue <span class="label label-success">{{Auth::user()->name}}</span> vous êtes connectés</p>
      @endif
@endsection
 
@section('footer')
 
@endsection
 
@section('scripts')
   @include('includes.footer')
@endsection
                            

-إنشاء صفحة إضافة المستخدم

هاد الصفحة غادي تمكن المستخدم من التسجيل فقاعدة البيانات وبالتالي التوفر على حساب يمكنو من الدخول أول حاجة غادي نخلقو ف resources/views مجلد جديد نسميوه users من بعد غادي نزيدو فيه ملف سميتو create.blade.php و ملف آخر نسميوه login.blade.php الكود ديالهم غادي يكون :

                                <?php
//create.blade.php
@extends('layouts.index-master')
 
@section('title')
    Inscription
@endsection
@section('styles')
 
@endsection
 
@section('header')
    @include('includes.header')
@endsection
 
@section('content')
     <div class="container">
        <div class="row">
            <div class="col-md-6 col-md-offset-2">
                <h3>Créer un compte</h3>
                @include('includes.info-box')
                <form method="post" action="{{route('users.store')}}">
                    <div class="form-group">
                        <label for="nom">Nom & Prénom</label>
                        <input type="text" name="name" class="form-control" placeholder="Nom & Prénom">
                    </div>
                    <div class="form-group">
                        <label for="email">Email</label>
                        <input type="email" name="email" class="form-control" placeholder="Email">
                    </div>
                     <div class="form-group">
                        <label for="password">Mot de passe</label>
                        <input type="password" name="password" class="form-control" placeholder="Mot de Passe">
                        <input type="hidden" name="_token" value="{{Session::token()}}">
                     </div>
                    <div class="form-group">
                         <button type="submit" class="btn btn-success">Créer</button>
                    </div>
                </form>
            </div>
        </div>
     </div>
@endsection
 
@section('footer')
  @include('includes.footer')
@endsection
 
@section('scripts')
 
@endsection
//login.blade.php
@extends('layouts.index-master')

@section('title')
    Connexion
@endsection
@section('styles')

@endsection
@section('header')
  @include('includes.header')
@endsection
@section('content')
<div class="row">
    <div class="col-md-6 col-md-offset-3">
        <h3>Connexion</h3>
        @include('includes.info-box')
        <form action="{{route('users.auth')}}" method="post">
            <div class="form-group">
                <label for="email">Email</label>
                <input type="email" placeholder="E-mail" class="form-control"  id="email" name="email">
                <input type="hidden" name="_token" value="{{Session::token()}}">
            </div>
            <div class="form-group">
                <label for="password">Mot de passe</label>
                <input type="password" placeholder="Mot de passe" class="form-control" id="password" name="password">
            </div>
            <div class="form-group">
                <button type="submit" class="btn btn-success">Connexion</button>
            </div>
        </form>
    </div>
</div>

@endsection
@section('footer')

@endsection
@section('scripts')

@endsection
                            

-كود التسجيل

أول حاجة غادي تمشي ل cmd وتدير cd c:wamp/www/blog منبعد غادي تزيد controller ب إستعمال php artisan make:controller UsersController --resource غادي تمشي ل app/http/controllers غادي تلقى UsersController تزاد فيه مجموعة ديال ل functions فل create غادي نوجهو المستخدم للصفحة ديال التسجيل و ف store غادي يكون الكود لي كيسجل المستخدم

                                <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use App\Http\Requests;

class UsersController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
       
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
        return view('users.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
        $this->validate($request,[
            'name' => 'required|max:100',
            'email' => 'required|email|unique:users|max:100',
            'password' => 'required|max:100'
        ]);
        $user = User::create(['name'=>$request->name,'email'=>$request->email,'password'=>bcrypt($request->password)]);
        return redirect()->route('users.create')->with(['success'=>'Compte crée avec succés']);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
        
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
       
    }
}

                            

-كود الدخول

باش يتمكن المستخدم من الدخول غادي نزيدوا 3 ديال ل functions ف ل UsersController الاولى نسميوها login والثانية auth الاولى غادي توجه المستخدم لصفحة تسجيل الدخول والثانية غادي تتحقق من الامايل وكلمة المرور وتمكن المستخدم من الدخول والثالثة logout غادي تمكن المستخدم من الخروج الكود غادي يكون كالآتي :

                                     public function login(){
        return view('users.login');
    }
    public function auth(Request $request){
        $this->validate($request,[
            'email' => 'required|email',
            'password' => 'required'
        ]);
        if(!Auth::attempt(['email'=>$request->email,'password'=>$request->password])){
            return redirect()->route('users.login')->with(['fail'=>'Email ou mot de passe est incorrect!']);
        }
        return redirect()->route('users.index');
    }
    public function logout(){
        Auth::logout();
        return redirect()->route('index');
    }
                                

-آخر التعديلات

بقانا routes لي غادي يمكنونا من التحرك من صفحة لأخرى ببساطة غادي نمشيو ل routes.php ونزيد الكود ديال routes من بعد غادي نمشي ل includes/header.php غادي لقا routes سابقنا زدناهم فل Menu أخيرا غادي نزيدو ملف سميتو info-box.blade.php ف resources/views/includes لي غادي يمكنا من عرض الأخطاء المتعلقة بالحقول

                                    <?php
//routes.php code
Route::get('/',[
    'uses'=>'HomeController@index',
    'as'=>'home'
]);
Route::resource('/users','UsersController');
Route::get('/login',[
    'uses' => 'UsersController@login',
    'as' => 'users.login'
]);
Route::get('/logout',[
    'uses' => 'UsersController@logout',
    'as' => 'users.logout'
]);
Route::post('/login',[
    'uses' => 'UsersController@auth',
    'as' => 'users.auth'
]);
//info-box.blade.php
@if(Session::has('fail'))
    <div class="alert alert-danger">
        {{Session::get('fail')}}
    </div>
@endif
@if(Session::has('success'))
    <div class="alert alert-success">
        {{Session::get('success')}}
    </div>
@endif
@if(count($errors) > 0)
    @foreach($errors->all() as $error)
        <div class="alert alert-danger">{{$error}}</div>
    @endforeach
@endif
                                


إشترك في قناتنا على اليوتيوب

بحث في الموقع


إشترك للتوصل بالجديد