diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-31 14:35:16 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-31 14:35:16 +0200 |
| commit | 5f17f421b176d48ef556fb379f59bbb7d284b48e (patch) | |
| tree | 15f07f480b07c385c88d43f827fc452b5b9df21a /app/models/user.rb | |
| parent | a90a77cfb913c7c0444ec793b47fd4be6fb66c9f (diff) | |
Retire the unused per-node permission subsystem
Every path through Permission raised or lied: validates_presence_of on a
boolean made granted = false unsaveable, since false.blank? is true;
get_permission_for read a nonexistent identifier attribute; has_permission?
called an undefined plural method and returned a truthy relation in every
case; and set_permission mutated granted without saving. Nothing outside the
model referenced it and the table was empty.
Diffstat (limited to 'app/models/user.rb')
| -rw-r--r-- | app/models/user.rb | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/app/models/user.rb b/app/models/user.rb index 4d712f6c..e1eff059 100644 --- a/app/models/user.rb +++ b/app/models/user.rb | |||
| @@ -9,9 +9,6 @@ class User < ApplicationRecord | |||
| 9 | include Authentication | 9 | include Authentication |
| 10 | include Authentication::ByPassword | 10 | include Authentication::ByPassword |
| 11 | 11 | ||
| 12 | # Associations | ||
| 13 | has_many :permissions | ||
| 14 | |||
| 15 | # Validations | 12 | # Validations |
| 16 | validates_presence_of :login | 13 | validates_presence_of :login |
| 17 | validates_length_of :login, :within => 1..40 | 14 | validates_length_of :login, :within => 1..40 |
| @@ -62,46 +59,6 @@ class User < ApplicationRecord | |||
| 62 | write_attribute :email, (value ? value.downcase : nil) | 59 | write_attribute :email, (value ? value.downcase : nil) |
| 63 | end | 60 | end |
| 64 | 61 | ||
| 65 | # Permission stuff | ||
| 66 | |||
| 67 | def grant(node) | ||
| 68 | set_permission(true, node) | ||
| 69 | end | ||
| 70 | |||
| 71 | def revoke(node) | ||
| 72 | set_permission(false, node) | ||
| 73 | end | ||
| 74 | |||
| 75 | def inherit(node) | ||
| 76 | permission = self.permissions.for_node(node).first | ||
| 77 | permission.destroy if permission | ||
| 78 | end | ||
| 79 | |||
| 80 | def get_permission_for(node) | ||
| 81 | permissions = {} | ||
| 82 | self.permissions.for_node(node).each do |permission| | ||
| 83 | permissions[permission.identifier.to_sym] = permission.granted | ||
| 84 | end | ||
| 85 | permissions | ||
| 86 | end | ||
| 87 | |||
| 88 | # Checks for permission on the node and if necessary ascends the | ||
| 89 | # nodetree until permission is found or returns false if it is not found | ||
| 90 | # at all. | ||
| 91 | def has_permission?(node) | ||
| 92 | node_permission = self.permissions.for_node(node) | ||
| 93 | return node_permission unless node_permission.nil? | ||
| 94 | |||
| 95 | node.ancestors.reverse.each do |p| | ||
| 96 | local_permission = self.get_permissions_for(p)[identifier] | ||
| 97 | unless local_permission.nil? | ||
| 98 | return local_permission | ||
| 99 | end | ||
| 100 | end | ||
| 101 | |||
| 102 | return false | ||
| 103 | end | ||
| 104 | |||
| 105 | def is_admin? | 62 | def is_admin? |
| 106 | !!admin | 63 | !!admin |
| 107 | end | 64 | end |
| @@ -176,16 +133,4 @@ class User < ApplicationRecord | |||
| 176 | end | 133 | end |
| 177 | true | 134 | true |
| 178 | end | 135 | end |
| 179 | |||
| 180 | private | ||
| 181 | |||
| 182 | def set_permission(granted, node) | ||
| 183 | permission = self.permissions.for_node(node).first | ||
| 184 | if permission | ||
| 185 | permission.granted = granted | ||
| 186 | else | ||
| 187 | self.permissions.create!( :node => node, | ||
| 188 | :granted => granted ) | ||
| 189 | end | ||
| 190 | end | ||
| 191 | end | 136 | end |
