{t("Manage your account email address, password, and security settings")}
{t("Update your name and timezone preferences.")}
{t( "Choose which organization you see by default when logging in or navigating to pages without an organization context." )}
{t("Choose your preferred interface theme.")}
{t( "Update your email address. You'll receive a confirmation link to verify the new address." )}
{t( "Update your password. You'll be logged out and need to sign in again with your new password." )}
This password has appeared {@password_breach_count} {if @password_breach_count == 1, do: "time", else: "times"} in known data breaches. We strongly recommend choosing a different, more unique password to protect your account.
{t( "Permanently delete your account and all associated data. This action cannot be undone." )}
{t( "Once you delete your account, all of your data will be permanently removed. Before deleting, you can export your data from the My Data page." )}
{t( "Create API tokens to access Towerops programmatically. Tokens are scoped to a specific organization." )}
{t("Get started by creating a new API token.")}
{token.name}
{token.organization.name}
<%= if token.last_used_at do %> Last used {ToweropsWeb.TimeHelpers.format_date( token.last_used_at, @current_scope.timezone )} <% else %> {t("Never used")} <% end %>
{t("Manage mobile devices that receive push notifications for alerts.")}
{t("Add a mobile device to receive push notifications for alerts.")}
{session.device_name || "Unknown Device"}
<%= if session.alerts_enabled do %> <.icon name="hero-bell" class="h-3 w-3" /> Alerts On <% else %> <.icon name="hero-bell-slash" class="h-3 w-3" /> Alerts Off <% end %>{session.device_os} • {session.app_version}
Last used {ToweropsWeb.TimeHelpers.format_date( session.last_used_at, @current_scope.timezone )}
We detected {@failed_login_count} failed login attempts in the last 24 hours. {t( "Please review your login history below and ensure all activity is authorized." )}
{t("Manage browser sessions where you're currently logged in.")}
{t("Your current session will appear here after your next login.")}
{format_browser_info(session)}
<%= if is_current do %> {t("Current Session")} <% end %>{t( "Recent login attempts to your account, including successful and failed attempts." )}
{t("Your login attempts will appear here.")}
| {t("Date & Time")} | {t("Status")} | {t("Method")} | {t("Location")} | {t("IP Address")} |
|---|---|---|---|---|
| {format_timestamp_in_timezone( attempt.inserted_at, @current_scope.timezone, @current_scope.time_format )} | <%= if attempt.success do %> <.icon name="hero-check-circle" class="h-3 w-3" /> Success <% else %> <.icon name="hero-x-circle" class="h-3 w-3" /> Failed <% end %> | <% {icon, text} = login_method_info(attempt.method) %> <.icon name={icon} class="h-3 w-3" /> {text} | {format_location(attempt)} | {attempt.ip_address} |
{t("Showing")} {(@login_history_pagination.page - 1) * @login_history_pagination.per_page + 1} to {min( @login_history_pagination.page * @login_history_pagination.per_page, @login_history_pagination.total_count )} of {@login_history_pagination.total_count} results
{t( "Manage TOTP devices for two-factor authentication. You must have at least one device configured." )}
{t("Add your first authenticator app to enable two-factor authentication.")}
{device.name}
Added {ToweropsWeb.TimeHelpers.format_date( device.inserted_at, @current_scope.timezone )}
<%= if device.last_used_at do %>Last used {format_relative_time(device.last_used_at)}
<% end %>{t("Single-use backup codes for account access if you lose your authenticator app.")}
<%= if @unused_recovery_codes_count == 0 do %> {t("No recovery codes available")} - Generate new codes immediately <% else %> {t("You have")} {@unused_recovery_codes_count} unused recovery code{if @unused_recovery_codes_count != 1, do: "s"} <% end %>
{t( "You have no recovery codes available. If you lose access to your authenticator app," )} you won't be able to log in. Generate new codes now.
{t( "This will log you out from all other browsers and devices. Your current session will remain active." )}
{t( "Give this token a name and select the organization it will have access to." )}
{t("Copy this token now. You won't be able to see it again.")}
{t("Click the token to select all, or use the Copy button")}
Give this device a name to help you identify it (e.g., "iPhone 15", "iPad Pro").
{t( "Install an authenticator app (Google Authenticator, Authy, 1Password, etc.)" )}
{t("Scan the QR code below with your authenticator app")}
{t("Enter the 6-digit code from your app to verify setup")}
{t("Enter the 6-digit code from your app to verify")}
<.form id="verify-device-form" for={%{}} as={:verification} phx-submit="verify_new_device" >{t("Save these codes in a secure location. Each code can only be used once.")}
{t( "These codes won't be shown again. Store them securely (password manager, encrypted file, etc.)." )} {t( "If you lose your authenticator and these codes, you won't be able to access your account." )}
{t( "This action cannot be undone. All of your data will be permanently removed." )}
{t( "Please transfer ownership or delete these organizations before deleting your account." )}