Ecommerce App ب laravel & stripe paiement الجزء الثالت


فهاد الجزء الثالت من Ecommerce App ب laravel & stripe paiement غادي نمكلو الملفات الخاصين بالمستخدمين غادي نشوفوا كيفاش يمكن للمستخدم يتسجل ويتكونيكطا وغادي نشوفوا ايضا كيفاش نتحققوا واش أدمين أو لا مستخدم عادي وغادي نشوفوا ايضا كيفاش نزيدو القائمة الخاصة بالأدمن.

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

1- الملف User.php

غادي تمشي ل dossier app غادي تلقى ملف سميتو User.php هادا ل user model فبحال ل Product.php لي زدنا من قبل فهنا كنزيد ل fonction products لي كتقولنا بلي كل مستخدم عندو واحد ولا بزاف ديال les produits منبعد عندي ل fonction isAdmin لي فقط كتحقق واش الحقل admin ديال ل user كيساوي واحد يلا كان كيعني بلي أدمن مكنش كيعني بلي مستخدم عادي الكود ديال الملف هو :

                                <?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    public function products(){
        return $this->hasMany('App\Product');
    }
    public function isAdmin(){
        if($this->admin == 1){
            return true;
        }else{
            return false;
        }
    }
}
                            

2- الملف UsersController.php

كنمشي ل app/Http/Controllers كنزيد ملف جديد كنسميه UsersController.php لي غادي تكون فيه fonction create لي كتوجه المستخدم للملف الخاص بالتسجيل ولي غادي نزيدوه من بعد  ثم كاين fonction store لي كتحقق من أن الحقول مملوئين ثم كتزيد مستخدم جديد فقاعدة البيانات وكنوجهوه للصفحة الرئيسية مع رسالة نجاح منبعد كاين fonction login لي كتوجه المستخدم للملف الخاص بتسجيل الدخول منبعد كاين fonction auth لي كتكونيكطي المستخدم بل email ول mot de passe ولي يلا نجحت الكونيكسيون كنوجهوه للصفحة الرئيسية مع رسالة نجاح ويلا كان العكس كنرسلوه للملف الخاص بتسجيل الدخول مع رسالة فشل الكونيكسيون منبعد عندنا logout لي كتديكونيكطي المستخدم الكود ديال الملف هو :

                                <?php

namespace App\Http\Controllers;

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

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

    /**
     * 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',
            'email' => 'required|email|unique:users',
            'password' => 'required'
        ]);
        $user = new User();
        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = bcrypt($request->password);
        $user->save();
        return redirect('/')->with(['success'=>'Compte crée']);
    }
    public function login(){
        return view('users.login');
    }
    public function auth(Request $request){
        if(Auth::attempt(['email'=>$request->email,'password'=>$request->password])){
            return redirect('/')->with(['success'=>'Connecté']);
        }else{
            return redirect()->route('users.login')->with(['fail'=>'Email ou mot de passe est incorrect']);
        }
    }
    public function logout(){
        Auth::logout();
        return redirect('/');
    }
}
                            

3- الملف users/register.blade.php

فالمجلد views زيد مجلد جديد سميه users فيه زيد ملف جديد سميه register.blade.php هادا الملف لي فيه الفورم لي كتمكن المستخدم من التسجيل فمنبعد مكيدخل المعلومات ديالو فالحقول هاد المعلومات كتمشي لل fonction store لي كاينة ف UsersController.php وكاين أيضا الكود لي كيعرض رسائل الخطأ يلا كان شي حقل فارغ الكود ديال الملف هو :

                                @extends ('includes.main-layout')

@section('styles')

@endsection

@section('header')
    @include('includes.header')
@endsection

@section('content')
    <div class="row">
        <div class="col-md-6 mx-auto">
            <div class="card mt-4">
            @include('includes.errors')
                <div class="card-body">
                    <h3 class="card-title text-primary">Inscription</h3>
                    <hr>
                    <form action="{{route('users.store')}}" method="post">
                        <div class="form-group">
                            <label for="name">Nom & Prénom*</label>
                            <input type="text" name="name" class="form-control" id="name" placeholder="Nom & Prénom">
                            <input type="hidden" name="_token" class="form-control" value="{{csrf_token()}}">
                        </div>
                        <div class="form-group">
                            <label for="email">Email*</label>
                            <input type="email" name="email" class="form-control" id="email" placeholder="Email">
                        </div>
                        <div class="form-group">
                            <label for="password">Mot de passe*</label>
                            <input type="password" name="password" class="form-control" id="password" placeholder="Mot de passe">
                        </div>
                        <div class="form-group">
                            <button class="btn btn-primary" type="submit">Valider</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
@endsection

@section('footer')

@endsection

@section('scripts')

@endsection
                            

4- الملف users/login.blade.php

دائما فالمجلد users فيه زيد ملف جديد سميه login.blade.php هادا الملف لي فيه الفورم لي كتمكن المستخدم من connexion فمنبعد مكيدخل ل email ول mot de passe فالحقول هاد المعلومات كتمشي لل fonction auth لي كاينة ف UsersController.php وكاين أيضا الكود لي كيعرض رسائل الخطأ يلا كان شي حقل فارغ الكود ديال الملف هو :

                                    @extends ('includes.main-layout')

@section('styles')

@endsection

@section('header')
    @include('includes.header')
@endsection

@section('content')
    <div class="row">
        <div class="col-md-6 mx-auto">
            <div class="card mt-4">
            @include('includes.errors')
                <div class="card-body">
                    <h3 class="card-title text-primary">Connexion</h3>
                    <hr>
                    <form action="{{route('users.auth')}}" method="post">
                        <div class="form-group">
                            <label for="email">Email*</label>
                            <input type="email" name="email" class="form-control" id="email" placeholder="Email">
                            <input type="hidden" name="_token" class="form-control" value="{{csrf_token()}}">
                        </div>
                        <div class="form-group">
                            <label for="password">Mot de passe*</label>
                            <input type="password" name="password" class="form-control" id="password" placeholder="Mot de passe">
                        </div>
                        <div class="form-group">
                            <button class="btn btn-primary" type="submit">Valider</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
@endsection

@section('footer')

@endsection

@section('scripts')

@endsection
                                

5- الملف includes/admin-header.blade.php

فالمجلد includes فيه زيد ملف جديد سميه admin-header.blade.php هادا الملف لي فيه لقائمة ديال التصفح الخاصة بالأدمن ولي غادي تمكنو من التنقل بين الصفحات الخاصة به لي كتعرض les produits كاملين ولي كتمكن من إضافة produit جديد الكود ديال الملف هو :

                                    <nav class="navbar navbar-expand-sm navbar-dark bg-dark">
    <a class="navbar-brand" href="#">Ecommerce</a>
    <button class="navbar-toggler hidden-lg-up" type="button" data-toggle="collapse" data-target="#collapsibleNavId" aria-controls="collapsibleNavId"
        aria-expanded="false" aria-label="Toggle navigation"></button>
    <div class="collapse navbar-collapse" id="collapsibleNavId">
        <ul class="navbar-nav mr-auto mt-2 mt-lg-0">
            <li class="nav-item active">
                <a class="nav-link" href="{{url('/')}}">Retour au site <span class="sr-only">(current)</span></a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="{{route('products.index')}}">Produits</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="{{route('product.create')}}">Ajouter</a>
            </li>
        </ul>
    </div>
</nav>
                                


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

بحث في الموقع


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