site ecommerce ب laravel 7 الجزء الرابع

imadbelasri Laravel
LA

فهاد الجزء الرابع من site ecommerce ب laravel 7 غادي نكملوا login و logout وغادي نزيدو تعديلات على LoginController و RegisterController باش يمكن نديرو التفعيل ديال الحساب ديال المستخدم.


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


1- تعديل ل controller RegisterController

غادي تمشي ل RegisterController وغادي تزيد تعديلات لي غادي تكون فاش غادي يتسجل المستخدم فعندنا fonction registered لي الدور ديالها أول مكيتسجل المستخدم كنزيدولو كود خاص به باش يفعل الحساب ديالو وكنرسلوه للإيمايل ديالو وكن déconnecté لمستخدم باش ميدخل حتى يفعل لحساب ديالو.

الكود ديال ل controller بعد التعديل هو :

                                                    
                                                        <?php

namespace App\Http\Controllers\Auth;

use App\User;
use Illuminate\Support\Str;
use App\Http\Controllers\Controller;
use App\Mail\ActivateYourAccount;
use Illuminate\Support\Facades\Hash;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Mail;

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = "/";

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

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

    /**
     * The user has been registered.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function registered(Request $request, $user)
    {
        //generate user activation code
        $code = Str::random(128);
        //insert code
        $user->code = $code;
        //update user table
        $user->update();
        //logout user
        $this->guard()->logout();
        //send email to activate account
        Mail::to($user)->send(new ActivateYourAccount($code));
        //redirect user
        return redirect("/login")
            ->withInfo("You need to activate your account email sent check your inbox");
    }
}
                                                    
                                                

2- تعديل ل controller LoginController

غادي تمشي ل LoginController وغادي تزيد تعديلات غادي نزيدو ل fonction authenticated لي الدور ديالها فاش كيبغي يدخل المستخدم كنتحقق من الحساب ديالو كان مفعل كنخليه يدخل مكانش كنوجهو ل login page باش يطلب رابط التفعيل من جديد.

الكود ديال ل controller بعد التعديل هو :

                                                        
                                                            <?php

namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

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 = "/";

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

    /**
     * The user has been authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function authenticated(Request $request, $user)
    {
        //
        if (!$user->active) {
            Auth::logout();
            return redirect("/login")
                ->with(['errorLink' => 'Activate your account
                    <a href="' . route('code.resend', $user->email) . '">
                        Resend activation link
                    <a>
                '])->withEmail($user->email);
        }
    }
}
                                                        
                                                    

3- إضافة routes

باش هادشي لي زدنا يخدم ضروري ما نزيدو les routes ديال التفعيل ديال الحساب.

غادي تمشي ل dossier routes وفل fichier web.php غادي تزيد les routes لي هما :

                                                        
                                                            //activate user account routes
Route::get('/activate/{code}', 'ActivationController@activateUserAccount')->name('user.activate');
Route::get('/resend/{email}', 'ActivationController@resendActivationCode')->name('code.resend');
                                                        
                                                    

دروس ذات صلة

LA

site ecommerce ب laravel 7 الجزء الأول

فهاد ال projet الجديد غادي نقادو site ecommerce ب laravel 7 غادي نزيدو ل paiement ب paypa...


LA

site ecommerce ب laravel 7 الجزء الثاني

فهاد الجزء الثاني من site ecommerce ب laravel 7 غادي نزيدو ل model Category ول controller CategoryCo...


LA

site ecommerce ب laravel 7 الجزء الثالت

فهاد الجزء الثالت من site ecommerce ب laravel 7 غادي نشوفوا كيفاش نزيدو login & logout بل email...


LA

site ecommerce ب laravel 7 الجزء الخامس

فهاد الجزء الخامس من site ecommerce ب laravel 7 غادي نشوفوا كيفاش نزيدو ل panier ومن بعد غادي نعرضوا...


LA

site ecommerce ب laravel 7 الجزء السادس

فهاد الجزء السادس من site ecommerce ب laravel 7 غادي نزيدو les routes ديالنا باش داكشي لي زدنا فالجز...


LA

site ecommerce ب laravel 7 الجزء السابع

فهاد الجزء السابع من site ecommerce ب laravel غادي نزيدو ل order model ول controller من بعد غادي نشو...


LA

site ecommerce ب laravel 7 الجزء الثامن

فهاد الجزء الثامن من site ecommerce ب laravel غادي نكملوا الجزء الخاص بالأدمن غادي نزيدو ل factory و...


LA

site ecommerce ب laravel 7 الجزء التاسع

فهاد الجزء التاسع من site ecommerce ب laravel غادي نزيدو la page ديال login ديال الأدمن ومنبعد غادي...


LA

site ecommerce ب laravel 7 الجزء العاشر

فهاد الجزء العاشر من site ecommerce ب laravel غادي نزيدو les pages الخاصين ب les produits أولا الصفح...