switch install state to db
This commit is contained in:
@@ -53,7 +53,7 @@ When translators disagree on a translation or want to suggest alternatives (regi
|
||||
|
||||
## Setup / First User
|
||||
|
||||
When the file `.installed` is missing, the `/setup` route is accessible for creating the initial admin account. The first user created will be the system's default contact email (accessible via `User.first.email`).
|
||||
When setup has not been completed, the `/setup` route is accessible for creating the initial admin account. Completion is tracked in the database. The first user created will be the system's default contact email (accessible via `User.first.email`).
|
||||
|
||||
For detailed setup instructions, see [SETUP_GUIDE.md](docs/SETUP_GUIDE.md).
|
||||
|
||||
|
||||
@@ -57,6 +57,6 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def setup_completed?
|
||||
File.exist?(Rails.root.join(".installed"))
|
||||
SetupState.installed?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -11,7 +11,7 @@ class SetupController < ApplicationController
|
||||
@user.invitation_accepted_at = Time.current
|
||||
|
||||
if @user.save
|
||||
create_installed_marker
|
||||
SetupState.mark_installed!
|
||||
session[:user_id] = @user.id
|
||||
redirect_to admin_root_path, notice: "Setup complete! Welcome to Sanasto Wiki."
|
||||
else
|
||||
@@ -28,15 +28,7 @@ class SetupController < ApplicationController
|
||||
end
|
||||
|
||||
def setup_completed?
|
||||
File.exist?(installed_marker_path)
|
||||
end
|
||||
|
||||
def installed_marker_path
|
||||
Rails.root.join(".installed")
|
||||
end
|
||||
|
||||
def create_installed_marker
|
||||
FileUtils.touch(installed_marker_path)
|
||||
SetupState.installed?
|
||||
end
|
||||
|
||||
def user_params
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
class SetupState < ApplicationRecord
|
||||
def self.installed?
|
||||
first&.installed? || false
|
||||
end
|
||||
|
||||
def self.mark_installed!
|
||||
record = first_or_initialize
|
||||
record.installed = true
|
||||
record.installed_at ||= Time.current
|
||||
record.save!
|
||||
end
|
||||
|
||||
def self.reset!
|
||||
delete_all
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,10 @@
|
||||
class CreateSetupStates < ActiveRecord::Migration[8.1]
|
||||
def change
|
||||
create_table :setup_states do |t|
|
||||
t.boolean :installed, null: false, default: false
|
||||
t.datetime :installed_at
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -88,7 +88,9 @@ BEGIN
|
||||
INSERT INTO entries_fts(entries_fts, rowid, fi, en, sv, no, ru, de, notes)
|
||||
VALUES('delete', old.id, old.fi, old.en, old.sv, old.no, old.ru, old.de, old.notes);
|
||||
END;
|
||||
CREATE TABLE IF NOT EXISTS "setup_states" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "installed" boolean DEFAULT FALSE NOT NULL, "installed_at" datetime(6), "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
|
||||
INSERT INTO "schema_migrations" (version) VALUES
|
||||
('20260122131000'),
|
||||
('20260122130000'),
|
||||
('20260122124151'),
|
||||
('20260122123837'),
|
||||
|
||||
Reference in New Issue
Block a user