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