اذهب إلى المحتوى

السؤال

نشر

عند طلب المستخدم إعادة تعيين كلمة المرور يتم إرسال ايميل بالرابط المطلوب. ولكن بعد الضغط على الرابط يظهر خطأ بأن الصفحة غير موجودة.

the object was not found because the URL is not existed

مع أنني قمت بتعريف مسار جديد للاحتفاظ بقيمة ال token:

Route::post('/forgot', [
'uses' => 'RegisterController@recover',
'as' => 'password.reset'
]);
Route::get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');

وهذا هو المتحكم الخاص بالعملية:

 public function recover(Request $request)
{
    $user = Admin::where('email', $request->email)->first();
    if (!$user) {
        $error_message = "Your email address was not found.";
        return redirect()->back()->with(['errors' => $error_message]);
    }
    Password::sendResetLink($request->only('email'), function (Message $message) {
    $message->subject('Your Password Reset Link');
    });
    return redirect()->back()->with(['success' => 'A reset email has been sent! Please check your email.']);
}

 

Recommended Posts

  • 0
نشر

يمكن الحصول على token بعد الضغط على الرابط المطلوب عن طريق:

 request::query()

بفرض رابط إعادة تعيين كلمة المرور يحوي token كالتالي:

http://localhost/forgot?c2108023762b4f86029d5758207cb4156fd58052ad9d6b13b729ce84092937de

فيكون المسار:

Route::get('forgot', function (Illuminate\Http\Request $request) {
    $query = $request->query();
    $token = (array_keys($query))[0];

    echo $token; // c2108023762b4f86029d5758207cb4156fd58052ad9d6b13b729ce84092937de

ويفضّل أيضاً إحاطة الكود الخاص بالمتحكم ب try catch نظراً لإحتمالية حدوث أخطاء أثناء العملية. فيصبح الكود الخاص بالمتحكّم على الشكل التالي:

 public function recover(Request $request)
{
    $user = Admin::where('email', $request->email)->first();
    if (!$user) {
        $error_message = "Your email address was not found.";
        return redirect()->back()->with(['errors' => $error_message]);
    }
    try {
        Password::sendResetLink($request->only('email'), function (Message $message) {
            $message->subject('Your Password Reset Link');
        });
    } catch (\Exception $e) {
        $error_message = $e->getMessage();
        return redirect()->back()->with(['errors' => $error_message]);
    }
    return redirect()->back()->with(['success' => 'A reset email has been sent! Please check your email.']);
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...