91 lines
3.5 KiB
PHP
91 lines
3.5 KiB
PHP
<?php
|
|
|
|
// Settings (profile + security) page strings (R16). Shared buttons live in common.php.
|
|
return [
|
|
// Identity header
|
|
'account' => 'Account',
|
|
'role_admin' => 'Administrator',
|
|
|
|
// Section nav tabs
|
|
'tab_profile' => 'Profile',
|
|
'tab_security' => 'Security',
|
|
'tab_users' => 'Users',
|
|
'tab_sessions' => 'Sessions',
|
|
'tab_email' => 'Email',
|
|
|
|
// Profile panel
|
|
'profile_title' => 'Profile',
|
|
'profile_subtitle' => 'Name and email',
|
|
'name' => 'Name',
|
|
'email' => 'Email',
|
|
|
|
// Password panel
|
|
'password_title' => 'Password',
|
|
'password_subtitle' => 'At least 10 characters',
|
|
'current_password' => 'Current password',
|
|
'new_password' => 'New password',
|
|
'repeat_password' => 'Repeat',
|
|
'change_password' => 'Change password',
|
|
|
|
// Two-factor panel
|
|
'twofa_title' => 'Two-factor authentication',
|
|
'twofa_subtitle' => 'TOTP (authenticator app)',
|
|
'twofa_status_on' => '2FA is active',
|
|
'twofa_status_off' => '2FA is not set up',
|
|
'twofa_hint_on' => 'Login requires a TOTP code.',
|
|
'twofa_hint_off' => 'Recommended — protects login with a second factor.',
|
|
'twofa_setup' => 'Set up',
|
|
'twofa_recommended' => '2FA is optional but recommended — secure your account with an authenticator or a security key.',
|
|
'twofa_remove_totp' => 'Remove authenticator',
|
|
|
|
// Account recovery (last-resort) note — admin-only, post-login
|
|
'recovery_note' => 'Account recovery (last resort): sign in to the host over SSH and run `clusev reset-admin`.',
|
|
|
|
// Notifications
|
|
'profile_saved' => 'Profile saved.',
|
|
'password_changed' => 'Password changed.',
|
|
|
|
// Disable-2FA confirmation modal
|
|
'disable_2fa_heading' => 'Remove authenticator',
|
|
'disable_2fa_body' => 'Remove the authenticator (TOTP) as a factor? Security keys are kept.',
|
|
'disable_2fa_notify' => 'Authenticator removed.',
|
|
|
|
// Stub tabs (filled in 0.9.0)
|
|
|
|
// Page title
|
|
'title' => 'Settings — Clusev',
|
|
|
|
// IP/CIDR whitelist validation
|
|
'lp_whitelist_invalid' => ':value is not a valid IP/CIDR.',
|
|
|
|
// Login protection tab
|
|
'tab_login_protection' => 'Login protection',
|
|
'lp_title' => 'Login protection',
|
|
'lp_subtitle' => 'Blocks IP addresses after too many failed sign-in attempts.',
|
|
'lp_enabled' => 'Enabled',
|
|
'lp_maxretry' => 'Max. attempts',
|
|
'lp_findtime' => 'Time window (min.)',
|
|
'lp_bantime' => 'Ban duration (min.)',
|
|
'lp_whitelist' => 'Whitelist (IP/CIDR, one per line)',
|
|
'lp_whitelist_hint' => 'These addresses are never counted or blocked. Loopback is always exempt.',
|
|
'lp_current_ip' => 'Your current IP',
|
|
'lp_current_ip_exempt' => 'exempt',
|
|
'lp_whitelist_my_ip' => 'Add my IP to the whitelist',
|
|
'lp_save' => 'Save',
|
|
'lp_saved' => 'Login protection saved.',
|
|
'lp_bans_title' => 'Active blocks',
|
|
'lp_ban_reason' => 'Reason',
|
|
'lp_ban_attempts' => 'Attempts',
|
|
'lp_ban_until' => 'blocked until :time',
|
|
'lp_no_bans' => 'No active blocks.',
|
|
'lp_unban' => 'Unblock',
|
|
'lp_unban_heading' => 'Unblock IP?',
|
|
'lp_unban_body' => ':ip will be allowed again.',
|
|
'lp_unban_notify' => 'IP unblocked.',
|
|
'lp_unban_all' => 'Unblock all',
|
|
'lp_unban_all_heading' => 'Clear all blocks?',
|
|
'lp_unban_all_body' => 'All currently blocked IP addresses will be allowed again.',
|
|
'lp_unban_all_notify' => 'All blocks cleared.',
|
|
'lp_lockout_note' => 'Logged-in operators are never blocked and can unblock their own IP here. Emergency: clusev unban <ip> on the host shell.',
|
|
];
|