آموزش ساخت Email Verification در لاراول 5.2

علی حسین شهابی

1395/8/15

نظر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 ایجاد کنیم که معلوم شود کدام کاربر حساب اش تایید شده و  یا نشده است .

خب تغییرات لازم بر روی دیتابیس را ایجاد کردیم. حالا با دستور زیر این تغییرات را اعمال می نماییم :

php artisan migrate

حالا نوبت میرسه به نوشتن توابعی که لازم داریم..این توابع رو داخل یک کلاس به نام ActivationRepository می نویسیم .

آموزش ساخت Email Verification در لاراول 5.2

برای نمایش پیغام هم می توانید داخل صفحه login.blade.php کد زیر را اضافه کنید :

@if (session('status'))
{{ session('status') }}

@endif
@if (session('warning'))
{{ 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);
}

اینم از آموش لاراول امروز.

موفق و پیروز باشید .

اینستاگرام علی حسین شهابی لینکدین علی حسین شهابی

1 نظر

( 1395/12/4 )امیر بختیاری

ممنون عالی بود

ارسال نظر جدید

 
Not signed in

کلیه حقوق مادی و معنوی , متعلق به سایت (Alihossein.ir)می باشد ,انتشار مطالب بدون ذکر منبع از نظر اخلاقی و شرعی صحیح نمی باشد.