diff options
Diffstat (limited to 'app/serializers/group_link/group_link_entity.rb')
-rw-r--r-- | app/serializers/group_link/group_link_entity.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/app/serializers/group_link/group_link_entity.rb b/app/serializers/group_link/group_link_entity.rb index 12349320b6f..73c9931fc70 100644 --- a/app/serializers/group_link/group_link_entity.rb +++ b/app/serializers/group_link/group_link_entity.rb @@ -30,5 +30,32 @@ module GroupLink expose :shared_with_group, merge: true, using: GroupBasicEntity end + + expose :can_update do |group_link, options| + can_admin_shared_from?(group_link, options) + end + + expose :can_remove do |group_link, options| + can_admin_shared_from?(group_link, options) + end + + expose :is_direct_member do |group_link, options| + direct_member?(group_link, options) + end + + private + + def current_user + options[:current_user] + end + + def direct_member?(group_link, options) + group_link.shared_from == options[:source] + end + + def can_admin_shared_from?(group_link, options) + direct_member?(group_link, options) && + can?(current_user, admin_permission_name, group_link.shared_from) + end end end |