موقع ecommerce بإستعمال laravel الجزء السادس

فهاد الجزء السادس من موقع ecommerce بإستعمال laravel غادي نكملو الملفات لي بقاو وليهما ديال الروت وغادي نشوفو ملف جديد لي غادي يمكن من التمييز بين المستخدم العادي والأدمن وأيضا ملف السلة ديال المنتوجات.

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


1- الملف AdminMiddleware.php


فapp/Http/Middleware غادي نزيد ملف جديد نسميه AdminMiddleware.php فيه الكود لي غادي يمنع على أي مستخدم ماشي أدمن باش يدخل للصفحة ديال الأدمن وكانخدمو بل fonction is_admin لي زدنا ف User.php فيلا مكانش أدمين كنردوه للصفحة الرئيسية كان كنخليوه يدوز للصفحة أدمين الكود ديال الملف هو :

                                    
                                        <?php

namespace App\Http\Middleware;

use Closure;
use Auth;
class AdminMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(!Auth::user()->isAdmin()){
            return redirect()->route('index');
        }
        return $next($request);
    }
}

                                    
                                

2- تفعيل الملف AdminMiddleware.php


ف app/Http غادي نزيد واحد السطر فالملف Kernel.php باش يمكنا نخدموا بالملف AdminMiddleware.php هاد السطر كنزيدو فالجدول []routeMiddleware$ :

                                    
                                               'admin' => \App\Http\Middleware\AdminMiddleware::class,
                                    
                                

3- الملف routes.php


فالمجلد app/Http وفالملف routes.php هادا ملف ديال les routes ديالنا ولي فيهم محددين les urls وكنخدمو بل admin middleware لي زدنا فالروابط ديال الأدمن وأيضا كاين auth ولي كتمنع على شي مستخدم ممكونيكطيش يدخل لرابط معين وguest لي كادير العكس الكود ديال الملف هو :

                                      
                                        <?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/

Route::get('/', [
    'uses' => 'HomeController@index',
    'as' => 'index'
]);
Route::get('/products',[
    'uses' => 'ProductsController@index',
    'as' => 'product.index'
]
);
Route::get('/panier',[
    'uses' => 'ProductsController@getPanier',
    'as' => 'product.panier'
]
);
Route::get('/register',[
    'uses' => 'UsersController@create',
    'as' => 'user.create',
    'middleware'=>'guest'
]
);
Route::post('/register',[
    'uses' => 'UsersController@store',
    'as' => 'user.create',
    'middleware'=>'guest'
]
);
Route::get('/login',[
    'uses' => 'UsersController@getLogin',
    'as' => 'user.login',
    'middleware'=>'guest'
]
);
Route::post('/login',[
    'uses' => 'UsersController@login',
    'as' => 'user.login',
    'middleware'=>'guest'
]
);
Route::get('/logout',[
    'uses' => 'UsersController@logout',
    'as' => 'user.logout',
    'middleware'=>'auth'
]
);
Route::get('/product/{id}/show',[
    'uses' => 'ProductsController@show',
    'as' => 'product.show'
]
);
Route::get('/categories/add',[
    'uses' => 'CategoriesController@create',
    'as' => 'cat.create',
    'middleware'=>'admin'
]
);
Route::get('/admin',[
    'uses'=>'UsersController@admin',
    'as'=>'admin',
    'middleware'=>'admin'
]);
Route::get('/admin/products',[
    'uses'=>'ProductsController@adminProducts',
    'as'=>'admin.products',
    'middleware'=>'admin'
]);
Route::get('/admin/products/{id}/delete',[
    'uses'=>'ProductsController@destroy',
    'as'=>'admin.products.delete',
    'middleware'=>'admin'
]);
Route::post('/admin/products/{id}/update',[
    'uses'=>'ProductsController@update',
    'as'=>'admin.product.update',
    'middleware'=>'admin'
]);
Route::get('/admin/categories',[
    'uses'=>'CategoriesController@index',
    'as'=>'categories.index',
    'middleware'=>'admin'
]
);
Route::post('/admin/categories/add',[
    'uses'=>'CategoriesController@store',
    'as'=>'categorie.add',
    'middleware'=>'admin'
]
);
Route::get('/admin/categories/{id}/delete',[
    'uses'=>'CategoriesController@destroy',
    'as'=>'categorie.delete',
    'middleware'=>'admin'
]
);
Route::post('/admin/categorie/{id}/update',[
    'uses'=>'CategoriesController@update',
    'as'=>'categorie.update',
    'middleware'=>'admin'
]);
Route::get('/admin/users',[
    'uses'=>'UsersController@index',
    'as'=>'admin.users.index',
    'middleware'=>'admin'
]
);
Route::get('/admin/users/{id}/delete',[
    'uses'=>'UsersController@destroy',
    'as'=>'admin.user.delete',
    'middleware'=>'admin'
]
);
Route::get('/admin/user/{id}/update',[
    'uses'=>'UsersController@update',
    'as'=>'user.update',
    'middleware'=>'admin'
]);
Route::get('/admin/user/{id}/remove',[
    'uses'=>'UsersController@removeAdmin',
    'as'=>'user.remove',
    'middleware'=>'admin'
]);
Route::get('/admin/product/add',function(){
    return view('admin.products.create');
}
);
Route::post('/products/create',[
    'uses' => 'ProductsController@store',
    'as' => 'product.add',
    'middleware'=>'admin'
]
);
Route::get('/products/{categorie}/find',[
    'uses'=>'ProductsController@productByCat',
    'as'=>'products.categorie'
]);
Route::post('/product/addToCart',[
    'uses'=>'ProductsController@addToCart',
    'as'=>'product.add.cart'
]);
Route::get('/products/cancel/cart',[
    'uses'=>'ProductsController@cancelCart',
    'as'=>'product.cancel.cart'
]);
                                      
                                    

4- الملف cart.blade.php


فباش تكون عندنا ل panier كاين واحد لclass لي غادي تحملها من هاد الرابط https://github.com/Crinsane/LaravelShoppingcart راه كاين تما الشرح كيفاش تزيدها من بعد مكتزيدها كتمشي للمجلد views/products وكتزيد فيه ملف جديد سميه cart.blade.php فيه غادي تكون المنتوجات لي زدنا فل panier ديالنا فمنبعد مكنعرض المنتوجات فجدول كيما مشروح فالرابط لي عطيتك كندوز للخلاص فبايبال وباش تدير تجربة شراء بحال يلا شريتي فعلا كتمشي ل https://developer.paypal.com كان عندك حساب كتدخل به مكانش كتفتح حساب لي هو للتجريب فقط من بعد كتمشي لDashboard ومنبعد للقائمة على الشمال sandbox->accounts->create account وكتفتح حساب فsandbox من بعد كتخد للإمايل لي عطاوك كاين 3 غادي تاخد type business ومن بعد غادي تمشي لhttps://www.sandbox.paypal.com وغادي تدخل بالإمايل وكلمة المرور ديال لحساب sandbox لي فتحتي هاد الإمايل هو لي غادي تزيد فالفورم راه كتبتها فالكود الكود ديال الملف هو :

                                        
                                            @extends('layouts.includes.main-index')

@section('content')
<div class="row">
  <div class="col-md-8">
    <div class="panel panel-primary panel-left">
        <div class="panel-heading panel-heading-dark"><h3 class="panel-title">Mon panier</h3></div>
                <div class="panel-body">
                    <?php 
                        $item_name = 1;
                        $item_number = 1;
                        $amount = 1;
                        $quantity = 1;
                    ?>
                    <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
                        <table class="table table-striped">
                            <tbody>
                                <tr>
                                    <th>Quantité</th>
                                    <th>Produit</th>
                                    <th>Prix</th>
                                    <th></th>
                                </tr>
                            <?php $i = 1; ?>
                            @foreach(Cart::content() as $cart)
                                <tr>
                                    <td>{{$cart->qty}}</td>
                                    <td>{{$cart->name}}</td>
                                    <td>{{$cart->price}}</td>
                                    <input type="hidden" name="cmd" value="_cart">
                                    <input type="hidden" name="business" value="votre business email">
                                    <input type="hidden" name="item_name_<?php echo $item_name;?>" value="<?php echo $cart->name;?>">
                                    <input type="hidden" name="item_number_<?php echo $item_number;?>" value="<?php echo $cart->id;?>">
                                    <input type="hidden" name="amount_<?php echo $amount;?>" value="<?php echo $cart->price;?>">
                                    <input type="hidden" name="quantity_<?php echo $quantity;?>" value="<?php echo $cart->qty;?>">
                                    <td></td>
                                </tr> 
                            </tbody>  
                            <?php 
                                $item_name++;
                                $item_number++;
                                $amount++;
                                $quantity++;
                            ?>
                            <?php $i++; ?> 
                            @endforeach  
                            <tfoot>
                                <tr>
                                    <td colspan="2">&nbsp;</td>
                                    <td>Total Ht</td>
                                    <td><?php echo Cart::subtotal(); ?></td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;</td>
                                    <td>TVA</td>
                                    <td><?php echo Cart::tax(); ?></td>
                                </tr>
                                <tr>
                                    <td colspan="2">&nbsp;</td>
                                    <td>Total</td>
                                    <td><span class="label label-danger"><?php echo Cart::total().' dh';?></span></td>
                                </tr>
                            </tfoot>                                 
                        </table>
                        @if(!Auth::check())
                          <a href="{{route('user.login')}}" class="text text-info">Connectez vous pour passer au paiement</a>
                        @else
                        @if(Cart::count() >= 1)
                        <button type="submit" name="upload" class="btn btn-success">Valider vos achats</button>
                        <a href="{{route('product.cancel.cart')}}" class="btn btn-danger">Annuler mon panier</a>
                        @endif
                        @endif
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection
                                        
                                    

5- الملف admin/index.blade.php


فالمجلد public غادي تزيد 4 دالمجلدات css وjs و fonts و images منبعد متحمل bootstrap زيد الملفات لي ف css فالمجلد css ولي فالمجلد js ف js ولي ف fonts ف fonts والصور لي غادي يتزادو ديال المنتوجات غادي يتزادو فimages وفالمجلد admin زيد ملف جديد سميه index.blade.php غادي يكون هو الصفحة الرئيسية ديال الأدمن فيها رسالة ترحيب بقات الform ديال البحث لي فالقائمة يمكنلك تحاول تبرمجها راسك باش تمكن من البحث على منتوجات فقاعدة البيانات الكود ديال index.blade.php هو :

                                        
                                            @extends('layouts.includes.admin-index')

@section('content')
     <div class="row">
        <div class="col-md-12">
          <h1>Bienvenue à votre admin panel</h1>
        </div>
     </div>  
@endsection
                                        
                                    

كلمات مفاتيح :