summaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-07-31 15:55:43 +0200
committererdgeist <erdgeist@erdgeist.org>2026-07-31 15:55:43 +0200
commit464dd4266bdc433805010b5dca428f4cb75c2a81 (patch)
tree47fdf4f065960d49da015eafdf56cb817dcf9ea4 /db
parent5f17f421b176d48ef556fb379f59bbb7d284b48e (diff)
Group user accounts by role
Replaces the two-way admin/user split with four groups ordered by capability: administration, Redaktion, editors, alumni. alumni takes precedence over capability in role_group, so a retired admin appears at the bottom rather than the top. Forms now offer the three roles as checkboxes rather than a single admin checkbox, with a trailing hidden blank so an empty set can be posted, and user_params permits roles only for admins. Three create buttons prefill the common combinations.
Diffstat (limited to 'db')
-rw-r--r--db/migrate/20260731124136_add_roles_to_users.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/db/migrate/20260731124136_add_roles_to_users.rb b/db/migrate/20260731124136_add_roles_to_users.rb
new file mode 100644
index 00000000..ea003e60
--- /dev/null
+++ b/db/migrate/20260731124136_add_roles_to_users.rb
@@ -0,0 +1,13 @@
1class AddRolesToUsers < ActiveRecord::Migration[8.1]
2 def up
3 add_column :users, :roles, :string, :array => true, :default => [], :null => false
4 execute "UPDATE users SET roles = ARRAY['admin','redaktion'] WHERE admin = true"
5 remove_column :users, :admin
6 end
7
8 def down
9 add_column :users, :admin, :boolean
10 execute "UPDATE users SET admin = true WHERE 'admin' = ANY(roles)"
11 remove_column :users, :roles
12 end
13end