=== Frederix External Login === Contributors: frederixhotspot Tags: login, hotspot, external login, wifi Requires at least: 5.0 Tested up to: 6.9 Stable tag: 1.1.0 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Handles the external login flow for CloudWiFi, including success and error pages. == Description == This plugin allows any WordPress page to act as an External Login page for CloudWiFi. It handles the entire flow: 1. **Login**: Displays a login button that redirects the user back to the hotspot. 2. **Success**: Displays a success message after authorization. 3. **Error**: Displays detailed error messages if the login fails (e.g., timeout, license exceeded). **Features:** * **One Shortcode**: Use `[frederix_external_login]` for everything. * **Automatic Mode**: Automatically detects if it should show the Login button, Success message, or Error message based on the URL parameters. * **Flexible Configuration**: Use different pages for Login/Success/Error if desired. * **Customizable Messages**: Change the button text and messages via shortcode attributes. * **Secure**: Validates and sanitizes all inputs. == Installation == 1. Upload the `frederix-external-login` folder to the `/wp-content/plugins/` directory. 2. Activate the plugin through the 'Plugins' menu in WordPress. 3. Create a new page (e.g., "WiFi Login"). 4. Add the shortcode `[frederix_external_login]` to the page content. 5. Configure your Hotspot's **External Login URL**, **Success URL**, and **Error URL** to point to this page. == Shortcode Options == You can customize the shortcode with the following attributes: * **`mode`**: Controls what the shortcode displays. * `auto` (default): Automatically switches based on URL status (`status=success` or `status=error`). * `login`: Forces the display of the login button. * `success`: Forces the display of the success message. * `error`: Forces the display of the error message. * **`text`**: The text on the login button. Default: "Login & Connect". * **`success_message`**: The message shown on success. Default: "You are now logged in..." * **`error_message`**: The fallback error message. Default: "An unknown error occurred." * **`tos_url`**: (Mandatory for Login) URL to your Terms of Service page. * **`privacy_url`**: (Mandatory for Login) URL to your Privacy Policy page. ### Examples **Standard Setup (One Page for everything):** `[frederix_external_login tos_url="/agb" privacy_url="/datenschutz"]` **Custom Button Text:** `[frederix_external_login text="Start Free WiFi" tos_url="/agb" privacy_url="/datenschutz"]` **Separate Error Page:** If you want a dedicated error page with a custom message: `[frederix_external_login mode="error" error_message="Something went wrong. Please ask at the reception."]` == Dynamic Styling == The plugin automatically adds CSS classes to the main container based on the Hotspot parameters. This allows you to style the page differently for each location. **Classes added:** * `fhk-hotspot-{hotspotId}` * `fhk-location-{locationId}` * `fhk-external-{externalId}` **Example CSS:** If you want a green button for Location 123 and a blue button for Location 456: ```css /* Location 123 - Green */ .fhk-location-123 .frederix-login-button { background-color: green; } /* Location 456 - Blue */ .fhk-location-456 .frederix-login-button { background-color: blue; } ``` == Conditional Content == You can show or hide any content (images, text, other shortcodes) based on the location or hotspot ID using the `[frederix_show_if]` shortcode. **Attributes:** * `location`: Comma-separated list of Location IDs. * `hotspot`: Comma-separated list of Hotspot IDs. * `external`: Comma-separated list of External IDs. **Example 1: Show a specific logo only for Location 123:** ```text [frederix_show_if location="123"] Location 123 Logo [/frederix_show_if] ``` **Example 2: Show a special notice for multiple Hotspots:** ```text [frederix_show_if hotspot="HS-01, HS-02"]

Special maintenance today in this area!

[/frederix_show_if] ``` **Example 3: Combine with the login shortcode:** ```text [frederix_show_if location="123"]

Welcome to the Beach Club!

[frederix_external_login text="Connect to Beach WiFi"] [/frederix_show_if] [frederix_show_if location="456"]

Welcome to the Lobby!

[frederix_external_login text="Connect to Lobby WiFi"] [/frederix_show_if] ``` == Frequently Asked Questions == = How do I test this? = You need a running Frederix Hotspot that redirects to your WordPress page. The hotspot will append parameters like `?callback=...` or `?status=success`. = Can I style the button? = Yes, the plugin includes basic CSS, but you can override `.frederix-login-button` in your theme's CSS. == Changelog == = 1.1.0 = * Added support for Success and Error states. * Added `mode` attribute for manual control. * Added customizable messages. = 1.0.0 = * Initial release.