Commit Graph

117 Commits

Author SHA1 Message Date
0daf413b47 Prevent sole admin from deleting their account
Without this guard, the last admin in the system could delete their own
account, making the application unmanageable. This adds a model method
`User#sole_admin?`, a controller guard in `RegistrationsController#destroy`,
and disables the delete button in the profile edit view when the current
user is the only remaining admin.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 06:52:14 +00:00
7904ff3ef9 Add web-based installation wizard
Replace the CLI-only setup (db:seed + manual application.rb edits)
with a web wizard shown automatically on first visit when no admin
account exists yet.

SetupController (GET/POST /setup) collects the admin e-mail and
password, a "skip e-mail confirmation" toggle, and an option to
seed the built-in default units.  Once submitted it creates the
admin User, persists the chosen options as Setting records, and
redirects to the sign-in page.

ApplicationController gains a redirect_to_setup_if_needed
before_action that catches every request (including Devise routes)
when no admin exists, so a fresh installation always lands on the
wizard rather than an empty sign-in form.

A new Setting model provides a lightweight key-value store for
runtime options that were previously hard-coded in application.rb
(e.g. skip_email_confirmation).  RegistrationsController now reads
that flag from the database instead of from the application config.

Seeds.rb is kept for headless / automated deployments and skips
admin creation when an admin already exists (idempotent), with a
comment pointing to the web wizard as the preferred path.

Also extends the SQLite nil-limit fix (|| Float::INFINITY) to the
Quantity model, which suffered the same ArgumentError as Unit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 17:19:24 +00:00
9ad922e3a1 Add skip_email_confirmation option; fix SQLite length validation
Introduce config.skip_email_confirmation in application.rb.dist.
When set to true, new registrations are automatically confirmed
without requiring email verification — useful for installations
where outgoing email is not configured or for development/testing.
Implemented by calling skip_confirmation! in build_resource before
the record is saved, so no confirmation email is ever sent.

Also fix ArgumentError raised in length validations when
type_for_attribute(:column).limit returns nil, which happens with
SQLite for string columns that have no explicit limit in the
migration. Guard with || Float::INFINITY so the validation is
effectively skipped when the database imposes no limit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 15:57:50 +00:00
84945fa4b4 Simplify and improve labeled form 2026-02-22 00:53:18 +01:00
bd1a664caa Measurement form based on select-styled <details> 2026-01-31 17:22:09 +01:00
ef0f3cbae3 Revert to asset precompilation in production 2025-07-26 00:10:59 +02:00
da38d8b585 Create Devise routes only when 'users' table exists
Closes #42
2025-07-25 15:30:26 +02:00
magicfixin
5ffc6974f0 Improve installation process 2025-07-23 23:42:41 +02:00
ef3484dfdf Update Measurements#new form pathnames on actions 2025-05-07 00:24:05 +02:00
4c867daabb Patch ActiveRecord with PR 54658 2025-03-22 14:14:42 +01:00
c48bf290fd Implement Measurements#new 2025-02-18 11:25:32 +01:00
9d60eee16b Add Measurements tab and #new form 2025-01-25 16:34:04 +01:00
201359de3e Allow to reparent Quantity everywhere
Closes #61
2025-01-14 21:13:35 +01:00
644d1f4b9a Add Quantity #reparent action 2025-01-14 15:02:38 +01:00
0652d4a89b Disallow self- and descendant-reference for base/parent 2025-01-12 19:15:43 +01:00
d5e7ccacf5 Add Quantity #edit and #update 2025-01-11 22:51:49 +01:00
57f10c94a4 Add Quantity #new, #create, #destroy actions 2025-01-11 17:01:34 +01:00
aa862f0e90 Quantities index WIP 2025-01-05 20:47:49 +01:00
b3aea97087 Add Quantities tab 2025-01-05 03:18:39 +01:00
b133b2be7c Add seperate 'no items' message for defaults
Closes #53
2025-01-03 18:47:56 +01:00
80f05ba45f Change root routes to redirects 2025-01-02 19:29:44 +01:00
ef825728ac Set single quotes for direct routes 2025-01-02 15:23:22 +01:00
b8bcbee1e9 Separate root routes for un- and authenticated users
Closes #34
Closes #47
2025-01-02 15:19:33 +01:00
fd4c7259b0 Move navigation tab labels 2025-01-02 02:48:33 +01:00
8552571526 Disable Unit destuction for base units with subunits
Closes #40
2024-12-28 23:57:47 +01:00
0659c1e1c1 Don't render index on Unit actions 2024-12-22 01:31:14 +01:00
d726e92445 Allow opening multiple new/edit forms
Closes #30
2024-12-21 17:52:45 +01:00
e15b983b56 Avoid duplicated symbols, check created record attributes 2024-12-15 23:36:24 +01:00
15a5515c99 Extend NumericalityValidator to check precision and scale
Use new checks on Unit.multiplier
Closes #28
2024-12-07 20:41:19 +01:00
25ac126df9 Systematize core extesions 2024-12-07 16:05:07 +01:00
d31ff5442a Update messages for empty Unit/default Unit indexes
Closes #26
2024-12-06 15:29:03 +01:00
2e4eb3d4b5 Rake task to export default settings as seeds 2024-12-06 01:17:05 +01:00
b38d72e9b0 Return to per-action permission filters 2024-11-30 20:15:30 +01:00
13685aa476 Update error handling according to new rules 2024-11-30 16:28:43 +01:00
2cbae12fa2 Implement Units default destroy 2024-11-30 16:11:31 +01:00
f9bd81c6ab Implement Unit defaults export
Disable import_all until implemented
2024-11-26 02:31:25 +01:00
f4ca1e91fa Mark redirecting buttons with trailing '...'
Closes #2
2024-11-23 23:26:08 +01:00
76ce2eeedd Display Unit name using #to_s 2024-11-23 02:24:08 +01:00
4c09989788 Add translation 2024-11-11 15:43:20 +01:00
9a02f0b0ae Fix quotes and translations 2024-11-10 21:46:00 +01:00
51011951f9 Default Units index 2024-11-10 21:30:19 +01:00
aebbe11bef Add default Units actions 2024-11-10 17:34:43 +01:00
537cd18336 Change namespace for defaults controllers
To allow proper path prefix for view partials when using
config.action_view.prefix_partial_path_with_controller_namespace
2024-11-09 21:50:50 +01:00
846eb6da14 Preliminary support for default Units import 2024-11-09 02:05:04 +01:00
769e4af603 Bring per-installation setting to application.rb 2024-06-04 00:47:50 +02:00
e905910719 Import previously missed settings to *.dist 2024-06-04 00:45:33 +02:00
07b4f89d1c Update /profile/edit layout to grid
Closes #29
2024-05-16 21:02:04 +02:00
927a8330bc Add souce code and issue tracker links
Closes #3
2024-05-12 23:21:30 +02:00
965cb76f1d Generate Units::Defaults controller
bin/rails g controller Units/Defaults index
2024-05-04 01:53:57 +02:00
b4212298df Add Unit defaults import link 2024-05-04 01:47:53 +02:00