Add customizable user roles (#18641)
* Add customizable user roles * Various fixes and improvements * Add migration for old settings and fix tootctl role management
This commit is contained in:
parent
1b4054256f
commit
44b2ee3485
187 changed files with 1945 additions and 1032 deletions
|
@ -2,52 +2,38 @@
|
|||
|
||||
class UserPolicy < ApplicationPolicy
|
||||
def reset_password?
|
||||
staff? && !record.staff?
|
||||
role.can?(:manage_user_access) && role.overrides?(record.role)
|
||||
end
|
||||
|
||||
def change_email?
|
||||
staff? && !record.staff?
|
||||
role.can?(:manage_user_access) && role.overrides?(record.role)
|
||||
end
|
||||
|
||||
def disable_2fa?
|
||||
admin? && !record.staff?
|
||||
role.can?(:manage_user_access) && role.overrides?(record.role)
|
||||
end
|
||||
|
||||
def change_role?
|
||||
role.can?(:manage_roles) && role.overrides?(record.role)
|
||||
end
|
||||
|
||||
def confirm?
|
||||
staff? && !record.confirmed?
|
||||
role.can?(:manage_user_access) && !record.confirmed?
|
||||
end
|
||||
|
||||
def enable?
|
||||
staff?
|
||||
role.can?(:manage_users)
|
||||
end
|
||||
|
||||
def approve?
|
||||
staff? && !record.approved?
|
||||
role.can?(:manage_users) && !record.approved?
|
||||
end
|
||||
|
||||
def reject?
|
||||
staff? && !record.approved?
|
||||
role.can?(:manage_users) && !record.approved?
|
||||
end
|
||||
|
||||
def disable?
|
||||
staff? && !record.admin?
|
||||
end
|
||||
|
||||
def promote?
|
||||
admin? && promotable?
|
||||
end
|
||||
|
||||
def demote?
|
||||
admin? && !record.admin? && demoteable?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def promotable?
|
||||
record.approved? && (!record.staff? || !record.admin?)
|
||||
end
|
||||
|
||||
def demoteable?
|
||||
record.staff?
|
||||
role.can?(:manage_users) && role.overrides?(record.role)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue