Commit Graph

40 Commits

Author SHA1 Message Date
HolgerHatGarKeineNode 4aba1514e9 Make the NIP-55 signer callback robust against Amber URL rewriting
Amber drops the query string when it rebuilds the callback URL and
appends the signed event directly to the path. The mobile login page now
hands out path-based callback URLs (/auth/mobile/signed/{k1}/) so the
event arrives as the remainder of the path.

The new callback runs in the web middleware group: the signer opens it
in the system browser, which shares cookies with the in-app browser
session, so the flow completes immediately — a bridge page issues the
token and fires the einundzwanzig:// deep link. The LoginKey row is
still written as a fallback for the polling login page.
2026-06-11 18:43:59 +02:00
HolgerHatGarKeineNode 07169dfee6 Add mobile app auth flow with Sanctum token handoff via deep link
The Einundzwanzig mobile app opens /auth/mobile in an in-app browser.
After a Lightning (LNURL) or Nostr login the flow issues a personal
access token and hands it back via the einundzwanzig://auth deep link.

- New auth.mobile-login Livewire view: Lightning QR (shared k1) plus
  Nostr signing via NIP-55 Android signers (Amber) with server callback,
  and a confirmation screen for already authenticated sessions
- MobileAuthController: NIP-55 callback verification, completion route
  issuing the token (replacing same-device tokens), redirect whitelist
- Nostr login event verification and npub user resolution extracted to
  App\Support\NostrLogin, now shared with the interactive login
- GET /api/user (auth:sanctum) returns the token owner's profile
2026-06-11 18:01:50 +02:00
HolgerHatGarKeineNode bf9654de87 🔄 **Refactor and extend meetup membership-based authorization**
- Updated `authorizeAccess` to restrict `meetups.edit` views and updates to users in "My-Meetups".
- Attached creators to `meetup_user` pivot for default membership.
- Adjusted related tests to validate membership-based edit permissions.

📱 **Improve sidebar and mobile navigation accessibility**
- Added `aria-labels` to improve screen reader support for sidebar and mobile header elements.
- Updated desktop and mobile user menus alignment for consistency.

 **Enhance Lightning login flow**
- Introduced `lightningLoginInProgress` for smoother polling synchronization with the redirect flow.
- Updated logic to dispatch `lightning-login-ready` event instead of immediate redirect, avoiding race conditions.
2026-05-17 17:28:17 +02:00
HolgerHatGarKeineNode 52276ee682 🗑️ **Remove redundant Laravel Boost guidelines**
Deleted unused Laravel Boost guideline files (`laravel-boost.md` and `laravel-boost.mdc`) to clean up the repository.
2026-05-17 15:08:01 +02:00
BT e7d1a949e8 **Nostr Login:** Improved user feedback and accessibility for login flow.
- 🔄 Added `x-effect` to lock page scrolling during login progress.
- 🛡️ Disabled login button and added loading indicators when `nostrLoginInProgress`.
- 🖼️ Introduced full-viewport progress overlay with accessible attributes and transitions.
- 🌐 Updated translations for signing states and instructions.
2026-05-04 00:43:50 +02:00
BT 686be7e8f7 **Nostr Login:** Prevented session race conditions during login flow.
- 🛡️ Added `nostrLoginInProgress` flag to pause `wire:poll` during Nostr login round-trip.
- 🔄 Removed redundant `Session::regenerate()` to avoid session ID conflicts.
- 🪲 Improved error handling for signature serialization and Nostr signer unavailability.
2026-05-04 00:36:00 +02:00
BT dc723855df **Nostr Login:** Improved CSRF token handling during login flow.
- 🛡️ Avoided redundant `Session::regenerate` call as `Auth::loginUsingId` already updates the session ID.
- 🚀 Replaced `wire:navigate` with a full-page redirect to ensure a fresh CSRF token for Livewire actions.
2026-05-04 00:15:37 +02:00
BT 2efc88a7f8 **Nostr Login:** Added server-side fallback for fresh challenges and improved client-side challenge resolution.
- 🔄 `requestNostrChallenge` now issues a new challenge when needed.
- 🛡️ Enhanced fallback logic in `nostrLogin.js` to ensure robust challenge retrieval.
-  Added test coverage for fresh challenge issuance.
2026-05-03 23:53:46 +02:00
BT bd7d39c1d7 **Nostr Login:** Enhanced error handling and removed unused auth-error event binding. 2026-05-03 23:41:49 +02:00
BT a363c99453 🔥 **Cleanup & Tests:** Removed the obsolete auth.register component and its related route, feature tests, and browser tests. Disabled public registration and added tests to ensure /register returns a 404. Added new tests for service, lecturer, city, venue, and meetup CRUD flows. 2026-05-03 20:09:07 +02:00
Claude 90835f8b1f security: critical fixes (test route, edit authz, nostr signature, calendar IDOR)
- Remove unauthenticated /test route that dispatched FetchNostrProfileJob
  for a hardcoded user (routes/web.php).
- Enforce created_by ownership check in meetup and lecturer Livewire edit
  components; mirror the existing services/edit pattern.
- Replace blind-trust nostrLoggedIn handler with NIP-42-style signed event
  verification: server-issued challenge stored in session, client signs a
  kind:22242 event, server verifies signature via swentel/nostr-php and
  derives npub. Challenge is single-use with 5-minute TTL.
- Validate the ?my[] parameter on the calendar download endpoint as an
  array of integers and intersect with the authenticated user's meetups.
2026-05-03 12:51:10 +00:00
HolgerHatGarKeineNode 9d96fc82fd 🛠️ Add logic to handle authError type conversion in Livewire login component 2026-01-18 13:14:20 +01:00
HolgerHatGarKeineNode b55c7da976 🛠️ Clean up Blade syntax and JS attribute bindings in login.blade.php for improved readability and consistency 2026-01-17 17:10:26 +01:00
HolgerHatGarKeineNode 4c0d387692 🛠️ Refactor Blade views for Livewire component consistency, streamline login view, and improve key usage across components
- Replaced `state` and `computed` with `Livewire\Component` implementations in `language/selector.blade.php` for enhanced maintainability.
- Adjusted `login.blade.php` syntax for dynamic href generation and removed commented-out sign-up link.
- Added unique `wire:key` attributes to iterable elements for enhanced performance and reactivity.
- Simplified controller routing and corrected indentation in `web.php`, improving clarity.
2026-01-17 17:07:15 +01:00
HolgerHatGarKeineNode eebe453f5a 🛠️ Replace Livewire\Volt\Component with Livewire\Component across all Blade views for consistency with updated Livewire conventions. 2026-01-17 16:12:07 +01:00
HolgerHatGarKeineNode e5ea65fa77 🔑 Implement LNURL-Auth support with error handling, frontend polling, and test coverage
- Added `LnurlAuthController` to handle LNURL authentication flow with signature verification, user creation, and session expiry checks.
- Integrated authentication error polling in `nostrLogin.js`.
- Added `LoginKeyFactory` for testing and database seed purposes.
- Created feature tests (`LnurlAuthTest`) to validate LNURL callback, error responses, and session handling.
- Extended `login.blade.php` with dynamic error handling and reset logic for expired sessions.
2026-01-17 15:23:38 +01:00
HolgerHatGarKeineNode fb185d7226 Add Livewire config, update composer dependencies, and enhance Blade layouts
- Introduced `livewire/livewire` v4 dependency.
- Added `config/livewire.php` for Livewire customization.
- Adjusted `login.blade.php` language fallback logic for session handling.
- Created new Blade layouts (`error.blade.php`, `auth.blade.php`, `app.blade.php`) for unified component architecture.
2026-01-17 14:12:41 +01:00
HolgerHatGarKeineNode b2e75d4d27 🖌️ Adjust login form layout and update Hungarian translations for consistency 2025-12-11 19:45:32 +01:00
HolgerHatGarKeineNode 90d61fcfdd 🛠️ Remove unused notification logic from login process in Livewire auth blade 2025-12-05 22:16:26 +01:00
HolgerHatGarKeineNode 4b16efaf9c 🌐 Replace language-selector component, introduce livewire:language.selector and enhance sidebar with dynamic language and country selection options 2025-12-05 18:44:23 +01:00
HolgerHatGarKeineNode 14dfc3fff7 🖼️ Fix QR overlay image path in lnurl-auth flow and ensure compatibility with localized and default images 2025-12-02 20:41:27 +01:00
HolgerHatGarKeineNode aedff4e2f5 🖼️ Fallback to default QR overlay image if localized version is unavailable 2025-12-02 20:40:07 +01:00
HolgerHatGarKeineNode c9240fe1f4 🖼️ Dynamically load QR code overlay image based on user language preference 2025-12-02 20:20:00 +01:00
HolgerHatGarKeineNode 6f77108ca2 🌐 Add Polish translations and expand Spanish dictionaries
- Added a new `lang/pl.json` file with comprehensive Polish translations.
- Enhanced `lang/es.json` with additional Spanish keys and phrases for better coverage.
2025-12-02 19:56:35 +01:00
HolgerHatGarKeineNode 8c1923f826 🚀 Add Nostr profile job, Hungarian translations, and Horizon integration
- Introduced `FetchNostrProfileJob` for retrieving and updating user Nostr profiles.
- Added Hungarian translations (`auth.php`, `passwords.php`, `validation.php`, and others) for improved localization.
- Integrated Laravel Horizon for enhanced queue management (`HorizonServiceProvider` added, `composer.json` updated).
- Updated German and Spanish language files to fix duplicate keys.
- Minor route addition for testing Nostr profile job dispatch.
2025-11-24 00:38:37 +01:00
HolgerHatGarKeineNode 00576794f6 🔒 Add fallback user creation for first-time logins and enhance redirect consistency
- Implemented automatic creation of fallback users with default properties during login if no existing user is found.
- Standardized the redirect logic for the dashboard route with consistent parameter handling.
- Improved readability of route definitions by formatting parameters across multiple lines.
2025-11-23 23:19:57 +01:00
HolgerHatGarKeineNode 6f7ee806ae 🌐 Introduce dynamic domain-based locale and country handling
- Added `DomainMiddleware` to dynamically set locale, language-country session, and app name based on domain.
- Updated views and components to leverage `lang_country` session for language and region-specific content.
- Enhanced country parameter retrieval with `config('app.domain_country')` as fallback.
- Refined language filtering by scanning available language files dynamically.
- Added language-specific assets and translations (`nl.json`, `es.json`) with improved language-region associations.
- Updated `app-logo-icon` to display region-specific images or default SVGs.
- Improved views with cleaner, dynamic rendering and session-aware functionalities.
2025-11-23 20:45:29 +01:00
HolgerHatGarKeineNode 8600f98312 🌐 Add multilingual configuration and translation files 2025-11-22 23:53:15 +01:00
HolgerHatGarKeineNode ff2a5636f6 Refactor routing to dashboard with country parameter adjustment 2025-11-22 23:02:26 +01:00
HolgerHatGarKeineNode b964eb7007 🔥 Refactor: Replace route_with_country with route in login redirection 2025-11-22 22:41:32 +01:00
HolgerHatGarKeineNode a5dafc67df Added SEO attributes and extended localization
- Added `#[SeoDataAttribute]` annotations to Livewire components for SEO management.
- Extended translations in English, Spanish, and German for better localization support.
2025-11-22 22:36:46 +01:00
HolgerHatGarKeineNode d359dd56b0 Implement SeoTrait across components for improved SEO integration. 2025-11-22 22:16:55 +01:00
HolgerHatGarKeineNode 25843db5a9 Add SEO support with configuration and traits
- Introduced `config/seo.php` to centralize SEO settings.
- Implemented `SeoTrait` for dynamic SEO management.
- Added `SeoDataAttribute` to set SEO metadata at the class level.
- Updated various views to integrate dynamic SEO handling.
- Included fallback settings for titles, descriptions, images, and more.
2025-11-22 22:12:45 +01:00
HolgerHatGarKeineNode ec2964608e 🌐 Add language selection accordion to welcome and login pages 2025-11-21 20:04:58 +01:00
HolgerHatGarKeineNode 76cd159b6a Add wnjParams configuration for Nostr widget initialization across layouts and login page. 2025-11-21 17:54:21 +01:00
HolgerHatGarKeineNode efe44cf344 Add storage configuration, localization updates, and feed generation
- Added `publicDisk` configuration to `filesystems.php`.
- Expanded locale translations in `es.json` and `de.json`.
- Implemented RSS, Atom, and JSON feed views.
- Added `feed.php` configuration for feed generation.
- Introduced `ImageController` for image handling.
- Updated application routing to include `api.php`.
2025-11-21 16:23:55 +01:00
HolgerHatGarKeineNode 0800213e80 Enhance RSVP and attendee management for meetup events 2025-11-21 12:31:32 +01:00
HolgerHatGarKeineNode ddfa915acc - 🛠️ Replaced inline dashboard layout with Livewire component for better reusability and management.
- 🔒 Introduced Nostr-based login functionality with `nostr-tools` integration.
- 🖼️ Added user profile photo handling (upload, delete, and URL retrieval) in the `User` model.
- 💻 Updated views to use `flux:avatar` for consistent user avatars.
- ✂️ Removed unused routes and adjusted dashboard routing logic.
- 📦 Updated dependencies in `package.json` and `yarn.lock`.
2025-11-21 12:05:31 +01:00
HolgerHatGarKeineNode e3d6182a47 🎨 Add meetup logo upload functionality and enhance avatar consistency 2025-11-21 10:23:18 +01:00
user e4a4cfae2b 🚀 initial commit 2025-11-21 04:28:08 +01:00