Как разработать приложение для нескольких администраторов с рельсами и канканами?
У меня есть следующая модель ролей:
Admin1 -> Manager1 -> User1
|
-> Manager2 -> User2
|
-> User3
Admin2 -> Manager3 -> User4
|
-> Manager4 -> User5
|
-> User6
Admin1 может создать Manager1, Manager1 может создать User1. Администратор1 должен иметь возможность управлять всеми ресурсами Manager1 и Manager2 и ресурсами вложенных пользователей User1,2,3. Менеджер1 должен управлять своими ресурсами и Ресурсами Пользователя1,2.
Администратор2 не должен иметь никаких действий над ресурсами Admin1, Manager1,2 и User1,2,3.
1 ответ
Вы можете добавить поле к вашей пользовательской модели, скажем user_creator, которое содержит ссылку на пользователя, который создал этого пользователя. Затем просто убедитесь, что пользователи могут только управлять / администрировать других пользователей, которых они создали или которые были созданы пользователем, которого они создали (используя cancancan). Это должно достичь того, что вы ищете. Затем вы можете проверить, может ли текущий пользователь управлять / администрировать другого пользователя, например:
def sub_user_or_sub_sub_user_of?(user)
if self.sub_users.include?(user)
true
else self.sub_users.each do |sub_user|
return true if sub_user.sub_users.include?(user)
end
end
end