File: /var/www/console.fixgini.com/app/Http/Controllers/Authentication/SetNewPassword.php
<?php
namespace App\Http\Controllers\Authentication;
use App\Models\User;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Models\OtpVerification;
use App\Services\ActivityLogger;
use Illuminate\Support\Facades\Log;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use App\Notifications\LogAlertNotification;
use Illuminate\Support\Facades\Notification;
use Illuminate\Validation\ValidationException;
class SetNewPassword extends Controller
{
public function setNewPassword(Request $request)
{
try {
$validatedData = $request->validate([
'token' => 'required|numeric|exists:otp_verifications,otp|digits:6',
'email' => 'required|email|exists:otp_verifications,email',
'password' => 'required|valid_password',
'device_name' => 'required|string',
]);
} catch (ValidationException $e) {
Log::alert('Failed : ' . $e->getMessage());
return response()->json(['status' => 'error', 'message' => $e->getMessage()], 422);
}
try {
// Find the user by email
$user = User::where('email', $validatedData['email'])->first();
if ($user) {
// Update the user's password
$user->forceFill([
'password' => Hash::make($validatedData['password']),
'remember_token' => Str::random(60),
])->save();
// Log the activity
$device = $validatedData['device_name'];
$activityLogger = app(ActivityLogger::class);
$activityLogger->log('User changed PIN from mobile phone (API)', $user->id, $user->role, $device);
// delete the otp records of the user
OtpVerification::where('email', $validatedData['email'])->delete();
return response()->json(['status' => 'success', 'message' => 'Password reset.'], 200);
} else {
Log::error('User not found for email: ' . $validatedData['email']);
return response()->json(['status' => 'error', 'message' => 'Unable to reset password.'], 422);
}
} catch (\Throwable $th) {
$message = 'An error occurred during password reset: ' . $th->getMessage();
Log::alert($message);
return response()->json(['status' => 'error', 'message' => 'Unable to reset password.'], 500);
}
}
}