9a60bfec58
feat: migrate user settings and agent management to gettext
...
Migrates all remaining user settings and agent management flash messages to gettext:
User Settings:
- session_manager.ex: mobile device removal, alert preferences, browser session revocation, revoke all sessions
- totp_manager.ex: device creation, verification, deletion, recovery code generation
- api_token_manager.ex: token creation, deletion, validation errors
- user_auth.ex: policy consent acceptance message
Agent Management:
- agent_live/edit.ex: agent update success
- agent_live/index.ex: agent/cloud poller creation, token regeneration, agent deletion, global default settings
All flash messages now use domain-specific helpers (t_auth, t_equipment) for proper internationalization.
Tests passing: 4165 tests, 0 failures
2026-02-02 13:20:54 -06:00
0d85e85884
feat: migrate all remaining authentication and session flash messages to gettext
...
Completes the flash message migration by converting all remaining user-facing strings:
**UserAuth.ex changes:**
- All Plug functions: require_sudo_mode, require_authenticated_user, require_superuser
- load_current_organization error messages (3 messages)
- All LiveView on_mount callbacks (8 auth-related messages)
- Policy consent success message
**SessionManager.ex changes:**
- Mobile device session management (2 messages)
- Alert preferences updates (3 messages including conditional)
All messages now use t_auth() for consistent translation in the auth domain.
All tests passing (100 tests).
2026-02-02 13:02:44 -06:00
2ef154e4d7
feat: migrate core components to gettext
...
Migrates consent prompt component strings to gettext for internationalization:
- Updated Policies modal title
- Policy review message
- Policy acceptance checkbox labels (Privacy Policy, Terms of Service)
- Consent disclaimer text
- Accept button text
All strings now use gettext() for translation support.
2026-02-02 12:49:13 -06:00
a995e6283f
feat: migrate admin features to gettext
...
Migrates all admin-related flash messages to gettext for internationalization:
- Admin.UserLive.Index: user deletion messages
- Admin.OrgLive.Index: organization deletion messages
- UserAuth: impersonation start/stop messages
Adds Gettext backend and helpers import to UserAuth module to support translations.
All admin and auth tests passing (87 tests).
2026-02-02 12:45:38 -06:00
89a076fb67
feat: migrate equipment features to gettext and fix sudo mode tests
...
Migrates all equipment-related flash messages to gettext for internationalization:
- DeviceLive.Index: device discovery, reordering, error messages
- DeviceLive.Show: backup messages, permission errors
- DeviceLive.Form: device CRUD operations
- AlertLive.Index: alert acknowledgment messages
- SiteLive.Show: site discovery messages
- SiteLive.Form: site CRUD and SNMP/agent propagation
Fixes sudo mode test suite issues:
- Updates Accounts.sudo_mode?/2 test to check last_sudo_at instead of authenticated_at
- Adds register_and_log_in_user_with_sudo/1 helper to ConnCase
- Fixes UserAuth sudo mode tests to use session-based authentication
- Updates MyData tests to use sudo mode (now required per router config)
- Removes obsolete UserSettingsLive "without sudo mode" test
- Fixes grant_sudo_mode/1 DateTime truncation to seconds
All equipment module tests passing. Ready for Phase 3 (Admin Features).
2026-02-02 12:41:58 -06:00
949cfaf4e0
add default org
2026-02-02 10:45:37 -06:00
bd6dad85e1
purge more passkey and gettext updates
2026-02-02 10:20:59 -06:00
19b635c46f
feat: migrate email templates to gettext (Phase 2 - Emails)
...
- Update UserNotifier to use t_email() helper for all email content
- Extract 4 email subjects and 4 email bodies to emails domain:
* Update email instructions
* Log in instructions
* Confirmation instructions
* Reset password instructions
- Replace string interpolation with Gettext bindings (%{email}, %{url})
- Auto-populate English translations (msgstr = msgid)
- All emails now ready for future internationalization
First module migration complete per design plan.
2026-02-02 09:48:30 -06:00
cfb60cd186
feat: implement gettext infrastructure (Phase 1)
...
- Create domain-specific .pot template files (auth, equipment, admin, emails)
- Create corresponding English .po files for all domains
- Add GettextHelpers module with domain-specific helper functions:
* t() for default domain (common UI)
* t_auth() for authentication flows
* t_equipment() for equipment/device management
* t_admin() for admin features
* t_email() for email templates
- Import GettextHelpers in html_helpers() for automatic availability in LiveViews/components
- Add mix populate_english task to auto-fill English translations (msgstr = msgid)
- Task properly handles plural forms and multi-line strings
Phase 1 complete - infrastructure ready for module-by-module migration.
2026-02-02 09:40:32 -06:00
f938b263cd
Mikrotik backup and gettext start
2026-02-02 09:11:22 -06:00
6b63dc9295
encryption updates
2026-02-01 17:05:55 -06:00
23af86ba73
add mikrotik device handling
2026-02-01 16:42:39 -06:00
a66aec675e
Merge branch 'gmcintire/user-first-last-name' into 'main'
...
Replace single name field with first_name and last_name
See merge request towerops/towerops!3
2026-02-01 15:00:24 -06:00
e46ecbfca2
Replace single name field with first_name and last_name
2026-02-01 15:00:23 -06:00
f0d6ae42d0
feat: update UserAuth to redirect to sudo verify page
2026-02-01 14:58:07 -06:00
ada851e7ed
feat: add Accounts.grant_sudo_mode/1 function
2026-02-01 14:02:41 -06:00
004189aaf9
Add firmware tracking database schema
...
- Create firmware_releases table to store latest available firmware versions
- Create device_firmware_history table to track version changes over time
- Add FirmwareRelease and DeviceFirmwareHistory Ecto schemas with validations
- Add comprehensive tests for both schemas (23 tests, 100% coverage)
firmware_releases stores one record per vendor/product_line with latest version.
device_firmware_history is append-only audit log of device firmware changes.
Part of firmware version tracking system for MikroTik (extensible to other vendors).
2026-02-01 10:13:16 -06:00
2fab08f5f8
forgot password flow
2026-01-31 17:03:22 -06:00
dff9c26905
fix TOTP enrollment with recovery codes
2026-01-31 14:54:44 -06:00
c690827ee0
user setting re-auth redirect hopeful fix
2026-01-31 13:32:26 -06:00
15ac68fd9c
banner dissmiss fix
2026-01-31 13:09:58 -06:00
480789c3e2
banner dissmiss and mikrotik version and license
2026-01-31 13:07:09 -06:00
12a777d13d
fix routeros temperature divisor
2026-01-31 12:19:53 -06:00
c4ce7a94ca
memory leak fixing
2026-01-31 10:40:19 -06:00
3c00dcf37c
remove passkeys for now
2026-01-31 09:50:35 -06:00
22ae257b60
refactor
2026-01-31 09:35:07 -06:00
6ca22c5dd0
enhance user auditing
2026-01-30 17:38:07 -06:00
1ace5b06af
fix impersonate mfa and some dialyzer issues
2026-01-30 17:04:39 -06:00
ac66926367
agent overhaul
2026-01-30 16:05:23 -06:00
b663d484cf
nif ci fix complie in ci
2026-01-30 12:47:18 -06:00
0214c2a100
complete overhaul of snmp engine to C nif
2026-01-30 12:27:12 -06:00
55e9397d59
user session tracking
2026-01-29 14:14:21 -06:00
c0736d4c2e
gdpr consent tracking
2026-01-29 11:12:35 -06:00
58b1aa50c2
security fixes
2026-01-28 16:55:41 -06:00
9833f61043
login redirect fix
2026-01-28 15:18:08 -06:00
0995abbccb
Add mandatory TOTP MFA
2026-01-28 15:09:38 -06:00
aed15dd6a1
impersonate fixes
2026-01-28 14:41:27 -06:00
8b71c4adb8
mib update from librenms
2026-01-28 13:38:31 -06:00
234ff7cbd2
add upsert support for geoip imports to prevent duplicates
2026-01-28 13:37:02 -06:00
d1fd1d4a62
remove Mix.env and support ip database import
2026-01-28 13:08:06 -06:00
220f1edce3
cookie improvements
2026-01-28 12:30:28 -06:00
588639a47a
gdpr cookie consent
2026-01-28 10:52:40 -06:00
d34c72a0ab
track more snmp things
2026-01-28 09:18:31 -06:00
88c003d474
major snmp overhaul
2026-01-28 09:07:13 -06:00
5fb92dd961
add device/org limit
2026-01-27 14:14:25 -06:00
3bb89670bd
enable agent debugging
2026-01-27 13:25:04 -06:00
328d4659a7
show correct agent on edit screen and fix airfiber/ltu
2026-01-27 12:52:43 -06:00
bb86dec559
add oban pro
2026-01-26 17:07:42 -06:00
19a818647b
documentation updates
2026-01-26 16:36:52 -06:00
b20a58aec4
test fixes
2026-01-26 15:27:59 -06:00