diff options
Diffstat (limited to 'app/serializers/group_group_link_entity.rb')
-rw-r--r-- | app/serializers/group_group_link_entity.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/app/serializers/group_group_link_entity.rb b/app/serializers/group_group_link_entity.rb index 7a51e1a9316..1e736214f54 100644 --- a/app/serializers/group_group_link_entity.rb +++ b/app/serializers/group_group_link_entity.rb @@ -1,17 +1,31 @@ # frozen_string_literal: true class GroupGroupLinkEntity < Grape::Entity + include RequestAwareEntity + expose :id expose :created_at expose :expires_at do |group_link| group_link.expires_at&.to_time end + expose :can_update do |group_link| + can_manage?(group_link) + end + + expose :can_remove do |group_link| + can_manage?(group_link) + end + expose :access_level do expose :human_access, as: :string_value expose :group_access, as: :integer_value end + expose :valid_roles do |group_link| + group_link.class.access_options + end + expose :shared_with_group do expose :avatar_url do |group_link| group_link.shared_with_group.avatar_url(only_path: false) @@ -23,4 +37,14 @@ class GroupGroupLinkEntity < Grape::Entity expose :shared_with_group, merge: true, using: GroupBasicEntity end + + private + + def current_user + options[:current_user] + end + + def can_manage?(group_link) + can?(current_user, :admin_group_member, group_link.shared_group) + end end |