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

فهاد الجزء الثالت من site ecommerce ب laravel 7 غادي نشوفوا كيفاش نزيدو login & logout بل email activation فالمستخدم مغادي يتسجل فالموقع ديالنا ويمكنلوا يدخل حتى يكون الحساب ديالو مفعل.

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


1- إضافة controller ActivationController


غادي تزيد controller جديد سميه ActivationController  فيه جوج ديال les fonctions الأولى غادي تفعل الحساب ديال المستخدم بالإيمايل ديالو الثانية غادي تعاود ترسل ليه رابط التفعيل في حالة ما عاود طلب الرابط من جديد.

الكود ديال الملف هو :

                                    
                                        <?php

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;
use App\Mail\ActivateYourAccount;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Mail;

class ActivationController extends Controller
{
    //activate your account
    public function activateUserAccount($code)
    {
        $user = User::whereCode($code)->first();
        $user->code = null;
        $user->update([
            "active" => 1
        ]);
        Auth::login($user);
        return redirect("/")->withSuccess("connected");
    }

    //send email to activate user account
    public function resendActivationCode($email)
    {
        $user = User::whereEmail($email)->first();
        if ($user->active) {
            return redirect("/");
        }
        Mail::to($user)->send(new ActivateYourAccount($user->code));
        return redirect("/login")->withSuccess("Activation link sent");
    }
}
                                    
                                

2- إضافة ل class ActivateYourAccount


فيلا شفتي فل controller لي زدنا غادي تلقى خدمنا بل class ActivateYourAccount باش نرسلوا رابط التفعيل للمستخدم لي تسجل فباش تزيدها دير هاد commande :

php artisan make:mail ActivateYourAccount

منبعد سير ل app ثم mail غادي تلقاها تزادت زيد فيها هاد الكود :

                                    
                                        <?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class ActivateYourAccount extends Mailable
{
    use Queueable, SerializesModels;

    public $code;
    public $url;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($code)
    {
        //
        $this->code = $code;
        $this->url = route("user.activate", $code);
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->from('dcodingshop@contact.com')
            ->markdown('emails.activate_user_account');
    }
}
                                    
                                

3- إضافة ل template activate_user_account


يلا شفتي ل class ActivateYourAccount لي زدنا غادي تلقى بلي خدمنا ب template سميتها activate_user_account ولي كاينة ف dossier emails.

غادي تمشي ل views زيد dossier emails فيه زيد fichier activate_user_account.blade.php وزيد فيه هاد الكود  : 

                                      
                                        @component('mail::message')
    # Activate your account

@component('mail::panel')
    to activate your account
@endcomponent

@component('mail::button',['url' => $url])
    click here
@endcomponent

Thanks.
<br>
team {{ config("app.name") }}

@endcomponent
                                      
                                    

4- التسجيل في موقع mailtrap


باش نرسل لإيمايل للمستخدم غادي نخدم بواحد الموقع سميتو mailtrap لي ممكن تشوف الفيديو لي لفوق باش تفتح حساب فيه.

منبعد غادي تمشي ل env. وغادي تزيد ل username ول password لي عطاوك كيف ما مبين فالكود لتحت :

                                        
                                            MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your user name
MAIL_PASSWORD=your password 
MAIL_ENCRYPTION=tls
                                        
                                    

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