Laravel 2 دقيقة للقراءة 328 مشاهدات

كيفية إرسال رسائل إعادة تعيين كلمة المرور في Laravel 11: دليل شامل

تعلّم كيفية تطبيق تدفق آمن لإعادة تعيين كلمة المرور في Laravel 11 مع قوالب بريد مخصصة وتحديد المعدل.

Email security illustration

المشكلة

ينسى المستخدمون كلمات مرورهم. تحتاج إلى طريقة آمنة للسماح لهم بإعادة تعيينها دون المساس بأمان الحساب.

الحل: إعادة تعيين كلمة المرور المدمجة في Laravel

الخطوة 1: إعداد البريد

# .env
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_FROM_ADDRESS=noreply@yourapp.com
MAIL_FROM_NAME="${APP_NAME}"

الخطوة 2: إنشاء مسارات إعادة التعيين

// routes/web.php
Route::get('/forgot-password', [PasswordResetController::class, 'showForm'])
    ->name('password.request');

Route::post('/forgot-password', [PasswordResetController::class, 'sendLink'])
    ->middleware('throttle:5,1')
    ->name('password.email');

Route::get('/reset-password/{token}', [PasswordResetController::class, 'showResetForm'])
    ->name('password.reset');

Route::post('/reset-password', [PasswordResetController::class, 'reset'])
    ->name('password.update');

الخطوة 3: إنشاء المتحكّم

<?php

namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;

class PasswordResetController extends Controller
{
    public function sendLink(Request $request)
    {
        $request->validate(['email' => 'required|email']);

        $status = Password::sendResetLink(
            $request->only('email')
        );

        return $status === Password::RESET_LINK_SENT
            ? back()->with('status', 'Password reset link sent!')
            : back()->withErrors(['email' => __($status)]);
    }

    public function reset(Request $request)
    {
        $request->validate([
            'token' => 'required',
            'email' => 'required|email',
            'password' => 'required|min:8|confirmed',
        ]);

        $status = Password::reset(
            $request->only('email', 'password', 'password_confirmation', 'token'),
            function ($user, $password) {
                $user->forceFill([
                    'password' => Hash::make($password)
                ])->setRememberToken(Str::random(60));
                $user->save();
            }
        );

        return $status === Password::PASSWORD_RESET
            ? redirect()->route('login')->with('status', __($status))
            : back()->withErrors(['email' => [__($status)]]);
    }
}

الخطوة 4: تخصيص قالب البريد

php artisan vendor:publish --tag=laravel-notifications

أفضل ممارسات الأمان

  • حدّد معدّل طلبات إعادة تعيين كلمة المرور
  • اضبط انتهاء صلاحية الرمز (افتراضياً: 60 دقيقة)
  • سجّل محاولات إعادة التعيين
  • أبطِل جميع الجلسات بعد إعادة التعيين

هذا كل شيء! يمكن لمستخدميك الآن إعادة تعيين كلمات مرورهم بأمان.

مشاركة هذه المقالة:
ES
كتبه

Edrees Salih

مهندس برمجيات متكامل يتمتع بخبرة 9 سنوات. شغوف ببناء حلول قابلة للتطوير ومشاركة المعرفة مع مجتمع المطورين.

عرض الملف الشخصي

التعليقات (0)

اترك تعليقًا

لن يتم نشر بريدك الإلكتروني.

لا توجد تعليقات بعد. كن أول من يشارك أفكاره!

مقالات ذات صلة

مقالات ذات صلة

هل تحتاج مساعدة في مشروعك؟

احجز استشارة مجانية لمدة 30 دقيقة لمناقشة تحدياتك التقنية واستكشاف الحلول معًا.