Warum funktioniert der Button Offene Zahlungen begleichen nicht?

Hallo!

Mein Button Offene Zahlungen begleichen übergibt nicht den UserNamen der in dem DropDown menü asgewählt wird und ich habe keine Ahnung warum das so ist?

<div class="col-md-4"> <!-- Adjust the column width to make it narrower -->

<!-- Filters Card -->

<div class="card mb-3">

<div class="card-header">

Filter

</div>

<div class="card-body">

<div class="mb-3">

<label for="userDropdown" class="form-label">Benutzer auswählen:</label>

<select class="form-select" id="userDropdown" onchange="filterOrders()">

<option value="All Users">Alle Benutzer</option>

@foreach($users as $user)

<option value="{{ $user }}">{{ $user }}</option>

@endforeach

</select>

</div>

<div class="form-check">

<input class="form-check-input" type="checkbox" value="" id="unpaidCheckbox" onchange="filterOrders()">

<label class="form-check-label" for="unpaidCheckbox">

Offene Zahlungen anzeigen

</label>

</div>

</div>

</div>

<!-- Total Owed and Pay Button Card -->

<div class="card mb-3">

<div class="card-header">

Offene Zahlungen

</div>

<div class="card-body text-center total-owed-box">

<h4>€<span id="totalOwed">0.00</span></h4>

<form method="POST" action="{{ route('admin.payOrders') }}" id="payForm" class="d-inline">

@csrf

<input type="hidden" name="user" id="hiddenUser">

<input type="hidden" name="unpaidOnly" id="hiddenUnpaidOnly">

<button type="button" class="btn btn-success" onclick="showPasswordModal('{{ route('admin.payOrders') }}')">Offene Zahlungen begleichen</button>

</form>

</div>

</div>

<div class="modal fade" id="passwordModal" tabindex="-1" aria-labelledby="passwordModalLabel" aria-hidden="true">

<div class="modal-dialog">

<div class="modal-content">

<div class="modal-header">

<h5 class="modal-title" id="passwordModalLabel">Passwort eingeben</h5>

<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>

</div>

<div class="modal-body">

<div class="mb-3">

<label for="passwordInput" class="form-label">Passwort</label>

<input type="password" class="form-control" id="passwordInput" required>

</div>

</div>

<div class="modal-footer">

<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Abbrechen</button>

<button type="button" class="btn btn-primary" onclick="validatePassword()">Bestätigen</button>

</div>

</div>

</div>

</div>

</form>

function showPasswordModal(validateUrl, orderId, userName) {

const password = prompt('Please enter your password:');

if (password) {

validatePassword(validateUrl, orderId, password, userName);

}

}

function validatePassword(validateUrl, orderId, password, userName) {

const token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');

fetch(validateUrl, {

method: 'POST',

headers: {

'Content-Type': 'application/json',

'X-CSRF-TOKEN': token

},

body: JSON.stringify({

password: password,

orderId: orderId,

userName: userName

})

})

.then(response => response.json())

.then(data => {

if (data.valid) {

alert('Order marked as paid successfully.');

location.reload(); // Reload the page to update the order status

} else {

alert(data.message);

}

})

.catch(error => {

console.error('Error:', error);

alert('An error occurred. Please try again later.');

});

}

</script>

<!-- Bootstrap Bundle with Popper -->

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

</body>

</html>

Könnt ihr mir vllt. helfen, DANKE!!!!

HTML, Webseite, JavaScript, Programmiersprache, Webentwicklung, Frontend
PHP/Passwortvergleich: Warum kommt immer wieder eine Fehlermeldung?

Hallo!

Ich will ein Passwort, das eingegeben wird, vergleichen. Doch es kommt immer wieder diese Fehlermeldung:

Eingegebenes Passwort: n1234
admin:238 Benutzername: nadine
admin:242 Uncaught ReferenceError: form is not defined
  at validatePassword (admin:242:18)
  at HTMLButtonElement.onclick (admin:161:100)

Der Code im AdminController sieht so aus:

public function validatePassword(Request $request, $userName) {
  try {
    $password = $request->input('password');

    // Benutzer anhand des Benutzernamens finden
    $user = User::where('username', $userName)->first();

    // Debugging-Informationen in das Log schreiben
    \Log::info('Benutzername: ' . $userName);
    \Log::info('Benutzer gefunden: ' . ($user ? 'Ja' : 'Nein'));

    if (!$user) {
      return response()->json(['valid' => false, 'message' => 'Benutzer nicht gefunden']);
    }

    // Überprüfen, ob das gespeicherte Passwort im Bcrypt-Format ist
    $passwordInfo = password_get_info($user->password);
    \Log::info('Passwort-Algorithmus: ' . $passwordInfo['algoName']);

    if ($passwordInfo['algoName'] !== 'bcrypt') {
      return response()->json(['valid' => false, 'message' => 'Das gespeicherte Passwort verwendet nicht den Bcrypt-Algorithmus.']);
    }

    // Passwortüberprüfung
    $passwordCheck = Hash::check($password, $user->password);
    \Log::info('Passwort korrekt: ' . ($passwordCheck ? 'Ja' : 'Nein'));

    if ($passwordCheck) {
      return response()->json(['valid' => true]);
    }
    else {
      return response()->json(['valid' => false, 'message' => 'Ungültiges Passwort']);
    }
  }
  catch (\Exception $e) {
    \Log::error('Fehler bei der Passwortvalidierung: ' . $e->getMessage());
    return response()->json(['valid' => false, 'message' => 'Serverfehler. Bitte versuchen Sie es später erneut.'], 500);
  }
}

Und im admin blade so:

function showPasswordModal(route, userName) {
  console.log('showPasswordModal() wurde aufgerufen mit Route:', route);
  $('#passwordModal').modal('show');
  $('#passwordForm').attr('action', route); // Setze die Aktion des Passwort-Formulars auf die gewählte Route
  $('#passwordForm').data('userName', userName);
  console.log(userName);
}

function validatePassword() {
  console.log('validatePassword() wurde aufgerufen');
  var enteredPassword = document.getElementById('passwordInput').value;
  var userName = $('#passwordForm').data('userName');
  console.log('Eingegebenes Passwort:', enteredPassword);
  console.log('Benutzername:', userName);

  $.ajax({
    type: 'POST',
    url: form.action,//$('#passwordForm').attr('action'), // Stellen Sie sicher, dass dies die richtige Route ist
    data: {
      '_token': '{{ csrf_token() }}',
      'password': enteredPassword
    },
    success: function(response) {
      console.log('Server-Antwort:', response);

      if (response.valid) {
        $('#payForm').submit();
      }
      else {
        alert(response.message || 'Falsches Passwort! Bitte versuche es erneut.');
      }
    },
    error: function(xhr, status, error) {
      console.error('AJAX-Fehler:', error);
      alert('Fehler beim Validieren des Passworts. Bitte versuche es später erneut.');
    }
  });

Warum kommt immer wieder eine Fehlermeldung? Ich habe schon alles probiert und das schon seit Stunden! Danke.

HTML, JavaScript, Code, PHP, Programmiersprache
POST Fehlermeldung?

Nun habe ich es geschafft, den Code einigermaßen richtig zu bekommen. Nur bekomme ich immer noch diese Fehlermeldung:

POST http://localhost:8001/validate-password/nadine 405 (Method Not Allowed)
send @ jquery.min.js:2
ajax @ jquery.min.js:2
validatePassword @ admin:286
onclick @ admin:187
admin:301 Method Not Allowed

Das hier ist der Code, in dem der Fehler auftritt:

cfunction validatePassword() {
  console.log('validatePassword() wurde aufgerufen');
  var enteredPassword = document.getElementById('passwordInput').value;
  var userName = $('#passwordForm').data('userName');
  console.log(enteredPassword);

  var form = document.createElement('form');
  form.method = 'POST';
  form.action = "{{ route('admin.validatePassword', ['userName' => ':userName']) }}".replace(':userName', userName);

  /*
  var csrfInput = document.createElement('input');
  csrfInput.type = 'hidden';
  csrfInput.name = '_token';
  csrfInput.value = '{{ csrf_token() }}';
  form.appendChild(csrfInput);
  var passwordInput = document.createElement('input');
  passwordInput.type = 'hidden';
  passwordInput.name = 'password';
  passwordInput.value = enteredPassword;
  form.appendChild(passwordInput);
  document.body.appendChild(form);
  //form.submit();
  */

  // Ajax-Anfrage
  $.ajax({
    type: 'POST',
    url: form.action,//'{{ route('admin.validatePassword', ['userName' => '$order->user']) }}', // Stellen Sie sicher, dass dies die richtige Route ist
    data: {
      '_token': '{{ csrf_token() }}',
      'password': enteredPassword
    },
    success: function(response) {
      if (response.valid) {
        $('#payForm').submit();
      }
      else {
        alert('Falsches Passwort! Bitte versuche es erneut.');
      }
    },
    error: function(xhr, status, error) {
      console.error(error);
      alert('Fehler beim Validieren des Passworts. Bitte versuche es später erneut.');
    }
  });

  // Check if you have additional logic here, ensure it's correctly structured and doesn't cause syntax errors.}

  /*
  if (enteredPassword === correctPassword) {
    $('#payForm').submit(); // Formular submit, um die Aktion zu starten
  }
  else {
    alert('Falsches Passwort! Bitte versuche es erneut.');
  }
  */
}

Ich habe schon alles mögliche probiert zum auskommentieren und alles debuggen hat aber nichts gebracht. Kann vielleicht jemand helfen? Danke.

JavaScript, PHP
Code funktioniert leider nicht?

Hallo!

Mein Code bekommt immer wieder eine Fehlermeldung, oder er funktioniert einfach nicht.

function showPasswordModal(route, userName) {
console.log('showPasswordModal() wurde aufgerufen mit Route:', route);
$('#passwordModal').modal('show');
$('#passwordForm').attr('action', route); // Setze die Aktion des Passwort-Formulars auf die gewählte Route
$('#passwordForm').data('userName', userName);
}
function validatePassword() {
console.log('validatePassword() wurde aufgerufen');
var enteredPassword = document.getElementById('passwordInput').value;
var userName = $('#passwordForm').data('userName');
var form = document.createElement('form');
form.method = 'POST';
form.action = "{{ route('admin.validatePassword', ['userName' => ':userName']) }}".replace(':userName', userName);
var csrfInput = document.createElement('input');
csrfInput.type = 'hidden';
csrfInput.name = '_token';
csrfInput.value = '{{ csrf_token() }}';
form.appendChild(csrfInput);
var passwordInput = document.createElement('input');
passwordInput.type = 'hidden';
passwordInput.name = 'password';
passwordInput.value = enteredPassword;
form.appendChild(passwordInput);
document.body.appendChild(form);
form.submit();

wenn auf den pay-button gedrückt wird, erscheint ein passwortfeld indem ein benutzerdefiniertes Passwort eingegeben werden soll. Diese Passwörter sind in einer Tabelle gespeichert. überprüft wird in diesen zwei methoden doch debuggen funktioniert irgendwie nicht und die variablen sind normalerweise richtig befüllt.? Weiß vllt irgendwer eine Lösung????? Danke im Vorraus.

HTML, JavaScript, PHP
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.