Class: ProjectMemberPresenter

Inherits:
MemberPresenter show all
Defined in:
app/presenters/project_member_presenter.rb

Instance Method Summary collapse

Methods inherited from MemberPresenter

#can_approve?, #can_override?, #can_resend_invite?, #valid_level_roles

Methods inherited from Gitlab::View::Presenter::Delegated

#initialize

Methods included from Gitlab::Utils::DelegatorOverride

#delegator_override, #delegator_override_with, #delegator_target, validator, validators, verify!

Methods included from Gitlab::View::Presenter::Base

#__subject__, #can?, #declarative_policy_delegate, #is_a?, #path_with_line_numbers, #present, #url_builder, #web_path, #web_url

Methods included from Gitlab::Allowable

#can?

Methods included from Gitlab::Routing

includes_helpers, redirect_legacy_paths, url_helpers

Constructor Details

This class inherits a constructor from Gitlab::View::Presenter::Delegated

Instance Method Details

#access_level_rolesObject



6
7
8
# File 'app/presenters/project_member_presenter.rb', line 6

def access_level_roles
  ProjectMember.permissible_access_level_roles(current_user, source)
end

#can_remove?Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
# File 'app/presenters/project_member_presenter.rb', line 10

def can_remove?
  # If this user is attempting to manage an Owner member and doesn't have permission, do not allow
  return can_manage_owners? if member.owner?

  super
end

#can_update?Boolean

Returns:

  • (Boolean)


17
18
19
20
21
22
# File 'app/presenters/project_member_presenter.rb', line 17

def can_update?
  # If this user is attempting to manage an Owner member and doesn't have permission, do not allow
  return can_manage_owners? if member.owner?

  super
end

#last_owner?Boolean

Returns:

  • (Boolean)


24
25
26
27
28
# File 'app/presenters/project_member_presenter.rb', line 24

def last_owner?
  # all owners of a project in a group are removable.
  # but in personal projects, the namespace holder is not removable.
  member.holder_of_the_personal_namespace?
end