diff options
Diffstat (limited to 'app/presenters/project_member_presenter.rb')
-rw-r--r-- | app/presenters/project_member_presenter.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/app/presenters/project_member_presenter.rb b/app/presenters/project_member_presenter.rb index 91d3ae96877..da24972775a 100644 --- a/app/presenters/project_member_presenter.rb +++ b/app/presenters/project_member_presenter.rb @@ -3,6 +3,24 @@ class ProjectMemberPresenter < MemberPresenter presents ::ProjectMember + def access_level_roles + ProjectMember.permissible_access_level_roles(current_user, source) + end + + 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 + + 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 + private def admin_member_permission @@ -16,6 +34,10 @@ class ProjectMemberPresenter < MemberPresenter def destroy_member_permission :destroy_project_member end + + def can_manage_owners? + can?(current_user, :manage_owners, source) + end end ProjectMemberPresenter.prepend_mod_with('ProjectMemberPresenter') |