Files
aperonight/app/javascript/controllers/logout_controller.js
kbe 4e2445198f feat: Implement complete event ticketing system with Stripe integration and email confirmations
- Enhanced events index page with improved visual design and better information display
- Completely redesigned event show page with modern layout, ticket selection, and checkout functionality
- Implemented Stripe payment processing for ticket purchases
- Created ticket generation system with PDF tickets and QR codes
- Added email confirmation system with ticket attachments
- Updated database configuration to use SQLite for easier development setup
- Fixed gem dependencies and resolved conflicts
- Improved error handling throughout the checkout process
- Enhanced Stimulus controller for ticket cart management
- Added proper redirect handling for successful and cancelled payments
2025-08-28 18:08:05 +02:00

58 lines
1.8 KiB
JavaScript
Executable File

import { Controller } from "@hotwired/stimulus";
export default class extends Controller {
static values = {
url: String,
};
connect() {
// Display a message when the controller is mounted
console.log("LogoutController mounted", this.element);
}
signOut(event) {
event.preventDefault();
console.log("User clicked on logout button.");
// Ensure user wants to disconnect with a confirmation request
// if (this.hasUrlValue && !confirm(this.element.dataset.confirm)) { return; }
// Retrieve the csrf token from header
const csrfToken = document.querySelector("[name='csrf-token']").content;
// Define url to redirect user when action is valid
let url = this.hasUrlValue ? this.urlValue : this.element.href;
// Ensure the URL is using the correct path prefix
if (url && !url.includes('/auth/sign_out')) {
url = url.replace('/users/sign_out', '/auth/sign_out');
}
// Use fetch to send logout request
fetch(url, {
method: "DELETE",
headers: {
"X-CSRF-Token": csrfToken,
Accept: "application/json",
"Content-Type": "application/json",
},
credentials: "same-origin",
})
.then((response) => {
// console.log(this.element.dataset.redirectUrlValue); // By default, we does not return anything.
// By default the response does not include any url.
// Redirect to default login page (redirectUrlValue)
if (response.redirected) {
window.location.href = response.url;
} else if (this.element.dataset.redirectUrlValue) {
window.location.href = this.element.dataset.redirectUrlValue;
return;
}
window.location.href = "/";
})
.catch((error) => {
console.error("Error during sign out:", error);
});
}
}