Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions Languages/en_US/Login.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

// Version: 3.0 Alpha 4; Login

// Login form.
$txt['login_alternatives'] = 'Or sign in with:';

// Registration agreement page.
$txt['agreement_agree'] = 'I accept the terms of the agreement.';
$txt['policy_agree'] = 'I accept the terms of the privacy policy.';
Expand Down Expand Up @@ -178,3 +181,31 @@
$txt['logout_confirm'] = 'Are you sure you want to log out?';
$txt['logout_notice'] = 'You are about to be logged out of the forum and continue browsing as a guest!';
$txt['logout_return'] = 'Stay logged in and return to browsing as a member.';

// External authentication.
$txt['authext_failed'] = 'That sign in could not be completed. Please try again.';
$txt['authext_declined'] = 'The sign in was cancelled.';
$txt['authext_provider_unavailable'] = 'That sign in method is not available right now.';
$txt['authext_no_account'] = 'There is no account here for that sign in, and this provider is not allowed to create one.';
$txt['authext_not_activated'] = 'That account is not activated yet.';

// Passkeys.
$txt['passkey_login'] = 'Sign in with a passkey';
$txt['passkey_unavailable'] = 'Passkeys are not available on this forum.';
$txt['passkey_not_logged_in'] = 'You have to be signed in to add a passkey.';
$txt['passkey_register_failed'] = 'That passkey could not be added.';
$txt['passkey_already_registered'] = 'That passkey has already been added to an account here.';
$txt['passkey_login_failed'] = 'That passkey could not sign you in.';
$txt['passkey_not_activated'] = 'That account is not activated yet.';

// Signing up without a password.
$txt['registration_signing_in'] = 'Signing in';
$txt['registration_signing_in_passkey'] = 'Your passkey is ready. Once this account exists, that is what will sign you in, so there is no password to choose.';
$txt['registration_signing_in_provider'] = '{provider} has already told us who you are, so there is no password to choose. That is what will sign you in from now on.';
$txt['passkey_signup'] = 'Use a passkey instead';
$txt['passkey_signup_desc'] = 'Use the fingerprint reader, face scan, PIN or security key that unlocks this device instead of choosing a password.';
$txt['passkey_signup_button'] = 'Create a passkey';
$txt['passkey_signup_done'] = 'Your passkey is ready. Finish signing up below to start using it.';
$txt['passkey_signup_failed'] = 'That passkey could not be created.';
$txt['passkey_signup_unavailable'] = 'Signing up with a passkey is not available on this forum.';
$txt['passkey_signup_needs_username'] = 'Choose a username first, so your device knows what to call this account.';
47 changes: 47 additions & 0 deletions Languages/en_US/ManageSettings.php
Original file line number Diff line number Diff line change
Expand Up @@ -487,3 +487,50 @@
$txt['export_min_diskspace_pct'] = 'Pause exports if free space on disk is less than';
$txt['export_rate'] = 'Rate at which to process posts & personal messages for export';
$txt['export_rate_desc'] = 'Higher values will compile exports more quickly, but could affect forum performance.';

// External authentication providers.
$txt['authentication_providers'] = 'Sign in providers';
$txt['authentication_providers_desc'] = 'Lets members sign in with an external account instead of a password. Each provider has to be registered with them first, which is where the client ID and secret come from.';
$txt['authentication_no_providers'] = 'No providers have been set up yet.';
$txt['authentication_add'] = 'Add a provider';
$txt['authentication_add_generic'] = 'Any OpenID Connect provider';
$txt['authentication_provider'] = 'Provider';
$txt['authentication_title'] = 'Name';
$txt['authentication_title_desc'] = 'What the button on the login page says.';
$txt['authentication_issuer'] = 'Issuer URL';
$txt['authentication_issuer_desc'] = 'The provider\'s base URL. Everything else is read from its discovery document.';
$txt['authentication_client_id'] = 'Client ID';
$txt['authentication_client_secret'] = 'Client secret';
$txt['authentication_client_secret_desc'] = 'Leave blank to keep the one already saved.';
$txt['authentication_scopes'] = 'Scopes';
$txt['authentication_scopes_desc'] = 'Space separated. Must include openid.';
$txt['authentication_redirect_uri'] = 'Redirect URI';
$txt['authentication_redirect_uri_desc'] = 'Give this to the provider when registering the forum. It has to match exactly.';
$txt['authentication_redirect_uri_pending'] = 'Available once this provider has been saved.';
$txt['authentication_enabled'] = 'Enabled';
$txt['authentication_order'] = 'Sort order';
$txt['authentication_policy'] = 'What a sign in may do';
$txt['authentication_allow_registration'] = 'Allow new accounts';
$txt['authentication_allow_registration_desc'] = 'Someone signing in with no account here is sent to the sign up form, still subject to the agreement, approval and age rules.';
$txt['authentication_link_by_email'] = 'Claim accounts by matching email';
$txt['authentication_link_by_email_desc'] = 'Only turn this on if you trust the provider to verify email addresses. Anyone who can get an address issued there could otherwise take over the account that uses it here.';
$txt['authentication_allow_private_host'] = 'Allow a provider on a private address';
$txt['authentication_allow_private_host_desc'] = 'Needed for a provider running on your own network. Leave off for anything on the internet.';
$txt['authentication_test'] = 'Test';
$txt['authentication_test_ok'] = 'The provider answered and its endpoints look usable.';
$txt['authentication_test_failed'] = 'Could not read anything usable from this provider.';
$txt['authentication_delete_confirm'] = 'Remove this provider? Anyone who signs in with it will have to use their password instead.';
$txt['authentication_needs_title_and_issuer'] = 'A provider needs at least a name and an issuer URL.';

// Passkeys.
$txt['authentication_area'] = 'Authentication';
$txt['passkey_settings'] = 'Passkeys';
$txt['passkey_settings_desc'] = 'Passkeys let members sign in with the fingerprint reader, face scan, PIN or security key that unlocks their device, instead of a password.';
$txt['passkey_settings_rp_id'] = 'Passkeys registered here will be tied to <strong>{rp_id}</strong>, taken from the forum URL. Changing the forum\'s domain later will stop every passkey working, and there is no way to move them.';
$txt['passkey_settings_no_openssl'] = 'Passkeys need PHP\'s openssl extension, which is not installed. Nothing on this page will have any effect until it is.';
$txt['webauthn_enabled'] = 'Allow passkeys';
$txt['webauthn_enabled_subtext'] = 'Members can add passkeys from their profile, and sign in with one instead of a password.';
$txt['webauthn_allow_signup'] = 'Allow signing up with a passkey';
$txt['webauthn_allow_signup_subtext'] = 'New members can create an account with a passkey instead of a password, still subject to the agreement, approval and age rules. An account made this way has no password at all, so losing the device it was made on means recovering the account by email.';
$txt['webauthn_allow_unverified'] = 'Accept devices that do not check who is using them';
$txt['webauthn_allow_unverified_subtext'] = 'By default a passkey only counts once the device has asked for a PIN, fingerprint or face scan. Turning this on accepts mere possession of the device instead, which means anyone holding it can sign in.';
30 changes: 30 additions & 0 deletions Languages/en_US/Profile.php
Original file line number Diff line number Diff line change
Expand Up @@ -676,3 +676,33 @@
$txt['export_download_original'] = 'Download original';
$txt['export_view_source_button'] = 'Toggle source view';
$txt['export_open_in_browser'] = 'Please open this file in a web browser to see a human readable version.';

// Linked accounts.
$txt['linked_accounts'] = 'Linked accounts';
$txt['linked_accounts_desc'] = 'The external accounts you can sign in with.';
$txt['linked_accounts_none'] = 'You have not linked any accounts yet.';
$txt['linked_accounts_provider'] = 'Provider';
$txt['linked_accounts_added'] = 'Linked';
$txt['linked_accounts_last_used'] = 'Last used';
$txt['linked_accounts_unlink'] = 'Unlink';
$txt['linked_accounts_add'] = 'Link another account';
$txt['linked_accounts_linked'] = 'That account is now linked.';
$txt['linked_accounts_unlinked'] = 'That account is no longer linked.';
$txt['linked_accounts_last_one'] = 'That is the only way you can sign in, so it cannot be unlinked. Set a password first.';
$txt['linked_accounts_only_way_in'] = 'Your only way to sign in';
$txt['linked_accounts_unknown_provider'] = 'Provider no longer configured';

// Passkeys.
$txt['passkeys'] = 'Passkeys';
$txt['passkeys_desc'] = 'Passkeys let you sign in with the fingerprint reader, face scan, PIN or security key you already use to unlock your device. There is no password to remember, and a passkey cannot be used on a site pretending to be this one.';
$txt['passkeys_none'] = 'You have not added any passkeys yet.';
$txt['passkeys_name'] = 'Name';
$txt['passkeys_name_desc'] = 'Something to tell this passkey apart from the others, such as the device it lives on.';
$txt['passkeys_added'] = 'Added';
$txt['passkeys_last_used'] = 'Last used';
$txt['passkeys_remove'] = 'Remove';
$txt['passkeys_add'] = 'Add a passkey';
$txt['passkey_added'] = 'That passkey is ready to use.';
$txt['passkey_default_title'] = 'Passkey';
$txt['passkey_last_one'] = 'That is the only way you can sign in, so it cannot be removed. Set a password first.';
$txt['passkey_only_way_in'] = 'Your only way to sign in';
13 changes: 13 additions & 0 deletions Sources/Actions/Admin/ACP.php
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,19 @@ class ACP implements ActionInterface, Routable
],
],
],
'authentication' => [
'label' => 'authentication_area',
'function' => __NAMESPACE__ . '\\Authentication::call',
'icon' => 'security',
'subsections' => [
'list' => [
'label' => 'authentication_providers',
],
'passkeys' => [
'label' => 'passkey_settings',
],
],
],
'maintain' => [
'label' => 'maintain_title',
'function' => __NAMESPACE__ . '\\Maintenance::call',
Expand Down
Loading