HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: /var/www/admin.javaapp.co.uk/app/Actions/ForgotPasswordAction.php
<?php

namespace App\Actions;

use App\Mail\SendPasswordResetEmail;
use App\Models\Admin;
use App\Models\Cafe;
use App\Models\PasswordReset;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str;

class ForgotPasswordAction
{
    public function handle($request, $user_type, $minute, $maxRequest)
    {
        DB::beginTransaction();
        try {
            switch ($user_type) {
                case config('constants.admin'):
                    $result = Admin::where('email', $request->email)->select('full_name as username', 'email')->first();
                    break;

                case config('constants.cafe'):
                    $result = Cafe::where('email', $request->email)->select('cafe_name as username', 'email')->where([['signup_completed', '=', 1],['approved', '=', 1]])->first();
                    break;

                default:
                    $result = null;
                    break;
            }
            if (!empty($result)) {

                $token = Str::random(60);
                $reset = [
                    'email' => $request->email,
                    'token' => $token,
                    'user_type' => $user_type,
                    'expired_at' => Carbon::now()->addMinutes($minute)->timestamp,
                    'created_at' => Carbon::now()->timestamp,
                ];
                $passwordResetExist = PasswordReset::where([['email', '=', $request->email], ['user_type', '=', $user_type]])->first();
                if ($passwordResetExist) {
                    $passwordReset = $passwordResetExist->update($reset);
                } else {
                    $passwordReset = PasswordReset::insert($reset);
                }
                if (!empty($passwordReset)) {
                    $subject = __('auth.subjectResetPassword');
                    $username = $result->username;
                    $view = 'emails.reset-password';
                    $reply_to = $request->email;
                    $url = route('reset.showResetForm') . '?token=' . $token . '&user-type=' . $user_type;
                    $data = [
                        'username' => $username,
                        'subject' => $subject,
                        'view' => $view,
                        'url' => $url,
                        'count' => $minute,
                    ];
                    Mail::to($reply_to)->send(new SendPasswordResetEmail($data));
                    DB::commit();
                    session()->flash('success_message', __('auth.sendResetLinkEmail'));
                    return redirect()->back();
                }
            } else {
                DB::rollback();
                session()->flash('error_message', __('common.emailNotFound'));
                return redirect()->back();
            }
        } catch (\Throwable $th) {
            DB::rollback();
            session()->flash('error_message', __('common.somethingWentWrong'));
            return redirect()->back();
        }
    }
}