=== atshift Freeform Login ===
Contributors: atshift
Tags: passkey, passwordless, login, custom login, login form
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 2.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Add passkey login to WordPress, customize the login screen, and place a matching login form anywhere with a shortcode.

== Description ==

Add passkey login to WordPress without replacing WordPress authentication. Users can sign in with a device's biometric authentication, PIN, or security key, while username and password login remains available as a fallback.

= Passkey Login =

Passkeys provide a simpler alternative to typing a username and password. Because each credential is created for this site, passkeys reduce the risks associated with phishing and password reuse.

* Register, name, review, and remove multiple passkeys from the WordPress profile screen
* Show registration and last-used dates for each passkey
* Sign in with a passkey from the standard WordPress login screen
* Offer the same passkey login through the `[atshift_login]` shortcode
* Use passkeys synchronized by the device's storage account on other devices, or register additional passkeys as needed
* Verify registration and login ceremonies on the WordPress server without an external authentication service

When [atshift User Profile Fields](https://wordpress.org/plugins/atshift-user-profile-fields/) is active, its optional Passkeys field can place the same management controls within the configured profile layout. Credentials and authentication remain managed by atshift Freeform Login.

Passkeys require PHP 8.3 or newer, the PHP JSON and OpenSSL extensions, and HTTPS. Localhost is supported for development. The design and shortcode features continue to work on PHP 7.4 or newer when the passkey requirements are not met.

Password login remains available as a fallback. Accounts should continue to use a long, unique password stored in a password manager.

The bundled WebAuthn and supporting libraries are MIT licensed. Package names and exact versions are recorded in `composer.lock`.

= Login Screen Design =

Customize the standard WordPress login screen while continuing to use WordPress authentication. The free plugin includes:

* Background colors and images
* A site-title brand display and introductory text
* Form placement, width, and responsive fallback controls
* Login form, button, link, and message colors
* A live preview before applying changes
* A matching login form for site pages with the `[atshift_login]` shortcode
* Jetpack SSO compatibility

When Jetpack SSO is active, its WordPress.com login UI is styled without replacing Jetpack authentication. The shortcode uses Jetpack automatically and respects Jetpack settings that hide or bypass the local login form.

== Links ==

* Official website: [upf.at-shift.net/en/freeform-login](https://upf.at-shift.net/en/freeform-login/)

== Pro Add-on ==

The optional Pro add-on extends the design controls provided by the free plugin. It is installed alongside this free base plugin.

Pro adds custom logo images, precise position offsets, transparency, borders, corner radius, and detailed shadow controls. The free plugin remains usable without an add-on.

* Pro add-on: [Upgrade to Pro](https://upf.at-shift.net/en/freeform-login/#pricing)

== Shortcode ==

Use `[atshift_login]` to place a login form styled by this plugin on a site page.

Optional attributes include `redirect`, `show_lost_password`, `remember`, `jetpack`, and `class`.

Use `[atshift_login jetpack="hide"]` only when local username and password login remains available.

== Installation ==

1. Upload the plugin folder to `/wp-content/plugins/`.
2. Activate the plugin.
3. Open Settings > atshift Freeform Login in the WordPress administration menu.
4. Configure and save the design.
5. Enable login-screen application after reviewing the preview.
6. On PHP 8.3 or newer, open Users > Profile to register a passkey.

== Screenshots ==

1. Freeform Login settings screen with a live preview and responsive design controls.

== Related Projects ==

* [atshift User Profile Fields](https://wordpress.org/plugins/atshift-user-profile-fields/) - create configurable WordPress user profile screens and place the Freeform Login Passkeys controls within their layouts.
* [at-shift Fields](https://wordpress.org/plugins/atshift-fields-maintenance-for-custom-field-suite/) - arrange custom fields for posts and custom post types with a similar field-building experience.

== Changelog ==

= 2.0 =
* Added server-verified passkey registration and passwordless login for supported PHP 8.3 or newer HTTPS sites.
* Added profile management for multiple named passkeys with registration and last-used dates.
* Added passkey login to the WordPress login screen and `[atshift_login]` shortcode alongside the existing password fallback.
* Added optional placement of Passkeys controls within atshift User Profile Fields profile layouts.

= 1.0.0 =
* Initial release with responsive login customization, shortcode output, and Jetpack SSO compatibility.
