diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-31 15:55:43 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-31 15:55:43 +0200 |
| commit | 464dd4266bdc433805010b5dca428f4cb75c2a81 (patch) | |
| tree | 47fdf4f065960d49da015eafdf56cb817dcf9ea4 /db | |
| parent | 5f17f421b176d48ef556fb379f59bbb7d284b48e (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.rb | 13 |
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 @@ | |||
| 1 | class 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 | ||
| 13 | end | ||
