summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-07-06 06:05:06 +0200
committererdgeist <erdgeist@erdgeist.org>2026-07-06 06:05:06 +0200
commitb547decd1f85b43d5fb9e86cd7462b455059b1d1 (patch)
treebba6cabe44eb13da440a722709a94bb10b8ce24d
parent2345668365640901658ca8085721ed1dd7d1c106 (diff)
Add preview_token to pages
New column + unique index, plus ensure_preview_token!/revoke_preview_token! on Page. Generated lazily (only when explicitly requested) rather than via has_secure_token's default auto-generate-on-create, so a live, shareable secret isn't silently minted for every page ever created.
-rw-r--r--app/models/page.rb9
-rw-r--r--db/migrate/20260706030547_add_preview_token_to_pages.rb6
2 files changed, 15 insertions, 0 deletions
diff --git a/app/models/page.rb b/app/models/page.rb
index 20461bf..4d1e94a 100644
--- a/app/models/page.rb
+++ b/app/models/page.rb
@@ -136,6 +136,15 @@ class Page < ApplicationRecord
136 "/#{node.unique_name}" 136 "/#{node.unique_name}"
137 end 137 end
138 138
139 def ensure_preview_token!
140 update!(preview_token: SecureRandom.urlsafe_base64(24)) unless preview_token.present?
141 preview_token
142 end
143
144 def revoke_preview_token!
145 update!(preview_token: nil)
146 end
147
139 def clone_attributes_from page 148 def clone_attributes_from page
140 return nil unless page 149 return nil unless page
141 150
diff --git a/db/migrate/20260706030547_add_preview_token_to_pages.rb b/db/migrate/20260706030547_add_preview_token_to_pages.rb
new file mode 100644
index 0000000..794cbb2
--- /dev/null
+++ b/db/migrate/20260706030547_add_preview_token_to_pages.rb
@@ -0,0 +1,6 @@
1class AddPreviewTokenToPages < ActiveRecord::Migration[8.1]
2 def change
3 add_column :pages, :preview_token, :string
4 add_index :pages, :preview_token, unique: true
5 end
6end