آموزش ساخت Email Verification در لاراول 5.2
- توسط : علی حسین شهابی
- 0 نظر
با سلام خدمت لاراول دوستان عزیز
امیدوارم حالتون خوب باشه..امروز درباره ساخت و ایجاد Email Verification ایمیل در لاراول 5 صحبت می کنیم . خب Email Verification به این درد میخوره که شما به هر کسی که ثبت نام کرده اجازه لاگین ندین و طرف مجبور باشه به وسلیه ی توکنی که به ایمیل اش فرستاده میشه حساب خودش رو تایید کنه و بعد از اون بتواند لاگین کند , وارد پنل شود و ادامه ی داستان…
برای ایجاد کنترلر ها و view های مربوط به عملیات لاگین و رجیستر بهتر است به داکیومنت لاراول مراجعه کنید و مطالعه ای داشته باشین و همانطور که می دانید با دستور زیر تمام کمنترلر ها و view های لازم برای عملیات authentication در لاراول ساخته می شود .
php artisan make:auth
خب ما ادامه کار رو دنبال می کنیم و میریم سراغ اینکه بعد از ثبت نام ایمیل حاوی کد فعال سازی برای کاربر فرستاده بشود و کاربر با کلیک روی آن بتواند حساب خود را تایید کند .
ابتدا نیاز به یک جدول داریم که شامل 3 فیلد است و نام کاربری , توکن ارسال شده برای کاربر و تاریخ ارسال را نگهداری می کند.این جدول را می توانیم با Migration زیر ایجاد نماییم.
php artisan make:migration create_user_activations_table --create=user_activations
داخل migrate فیلدهای جدول امون رو مشخص می نماییم :
Schema::create('user_activations', function (Blueprint $table) {
$table->integer('user_id')->unsigned();
$table->string('token')->index();
$table->timestamp('created_at');
});
علاوه بر اینکه جدول user_activations را لازم داشتیم بسازیم نیاز هست یک فیلد به نام activated هم در جدول user ایجاد کنیم که معلوم شود کدام کاربر حساب اش تایید شده و یا نشده است .
$table->boolean('activated')->default(false);
خب تغییرات لازم بر روی دیتابیس را ایجاد کردیم. حالا با دستور زیر این تغییرات را اعمال می نماییم :
php artisan migrate
حالا نوبت میرسه به نوشتن توابعی که لازم داریم..این توابع رو داخل یک کلاس به نام ActivationRepository می نویسیم .
برای نمایش پیغام هم می توانید داخل صفحه login.blade.php کد زیر را اضافه کنید :
@if (session('status'))
@endif
@if (session('warning'))
@endif
و در اخر دو متد زیر را به AuthController اضافه می کنیم برای چک کردن لاگین کاربر و اگر حساب اش فعال نشده بود دوباره توکن را ارسال می نماید .
public function authenticated(Request $request, $user)
{
if (!$user->activated) {
$this->activationService->sendActivationMail($user);
auth()->logout();
return back()->with('warning', 'You need to confirm your account. We have sent you an activation code, please check your email.');
}
return redirect()->intended($this->redirectPath());
}
public function activateUser($token)
{
if ($user = $this->activationService->activateUser($token)) {
auth()->login($user);
return redirect($this->redirectPath());
}
abort(404);
}
اینم از آموش لاراول امروز.
موفق و پیروز باشید .