PHP 8.3.30
Preview: CustomPasswordResetController.php Size: 2.80 KB
/home/getspomw/royalsquad.us/app/Http/Controllers/CustomPasswordResetController.php

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str;

class CustomPasswordResetController extends Controller
{
    /**
     * Display the password reset request form.
     */
    public function showLinkRequestForm()
    {
        return view('auth.passwords.email');
    }

    /**
     * Handle sending a password reset link to the user.
     */
    public function sendResetLink(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
        ]);

        $email = $request->email;

        $token = Str::random(60);
        $existingToken = DB::table('password_reset_tokens')->where('email', $email)->first();

        if ($existingToken) {
            // Update the existing token
            DB::table('password_reset_tokens')
                ->where('email', $email)
                ->update(['token' => $token, 'created_at' => now()]);
        } else {
            // Create a new token record
            DB::table('password_reset_tokens')->insert([
                'email' => $email,
                'token' => $token,
                'created_at' => now(),
            ]);
        }

        // Send reset email
        Mail::send('auth.passwords.reset_email', ['token' => $token, 'email' => $email], function ($message) use ($email) {
            $message->to($email);
            $message->subject('Password Reset Request');
        });

        return redirect()->route('login')->with('status', 'We have emailed your password reset link!');
    }

    /**
     * Display the password reset form.
     */
    public function showResetForm(Request $request, $token)
    {
        return view('auth.passwords.reset', ['token' => $token, 'email' => $request->email]);
    }

    /**
     * Handle resetting the user's password.
     */
    public function reset(Request $request)
    {
        $request->validate([
            'email' => 'required|email|exists:users,email',
            'password' => 'required|confirmed|min:6',
        ]);

        // Verify token and email match
        $resetRecord = DB::table('password_reset_tokens')->where('token', $request->token)->first();

        if (!$resetRecord || $resetRecord->email !== $request->email) {
            return back()->withErrors(['email' => 'Invalid token or email.']);
        }

        // Update the user's password
        $user = User::where('email', $request->email)->first();
        $user->password = Hash::make($request->password);
        $user->save();

        // Remove the used token
        DB::table('password_reset_tokens')->where('token', $request->token)->delete();

        return redirect('/login')->with('status', 'Your password has been reset!');
    }
}

Directory Contents

Dirs: 0 × Files: 12

Name Size Perms Modified Actions
2.85 KB lrw-rw-rw- 2025-09-18 05:50:45
Edit Download
315 B lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
2.74 KB lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
6.83 KB lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
4.65 KB lrw-rw-rw- 2026-02-09 06:01:39
Edit Download
77 B lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
2.80 KB lrw-rw-rw- 2025-09-18 05:51:38
Edit Download
616 B lrw-r--r-- 2026-04-19 15:59:24
Edit Download
3.58 KB lrw-rw-rw- 2025-09-18 05:56:23
Edit Download
1.48 KB lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
8.60 KB lrw-rw-rw- 2025-09-18 05:56:47
Edit Download
8.22 KB lrw-rw-rw- 2026-02-09 07:03:26
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).