diff options
author | TM Lee <tm89lee@gmail.com> | 2017-03-02 09:01:02 +0300 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2017-12-11 20:30:56 +0300 |
commit | 2cf3fc18a6e111a820f9842bb1d939790e8625eb (patch) | |
tree | 5ebad1908460ef6bbdbab371373bd0705372218e /app/presenters/member_presenter.rb | |
parent | bd8b6518855bd9768ca5d245467b5ff0934e40b6 (diff) |
Refactor member view by using presenter
- Create MemberPresenter alongside with GroupMemberPresenter and ProjectMemberPresenter
- Make Member model Presentable
- Move action_member_permission from MembersHelper into the MemberPresenter
- Added rspec using double, separate specs for GroupMemberPresenter and ProjectMemberPresenter
Fixes #28004.
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'app/presenters/member_presenter.rb')
-rw-r--r-- | app/presenters/member_presenter.rb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/app/presenters/member_presenter.rb b/app/presenters/member_presenter.rb new file mode 100644 index 00000000000..a8732226018 --- /dev/null +++ b/app/presenters/member_presenter.rb @@ -0,0 +1,40 @@ +class MemberPresenter < Gitlab::View::Presenter::Delegated + include Gitlab::Allowable + + presents :member + + def can_resend_invite? + invite? && + can?(current_user, admin_member_permission, source) + end + + def can_update? + can?(current_user, update_member_permission, member) + end + + def cannot_update? + !can_update? + end + + def can_remove? + can?(current_user, destroy_member_permission, member) + end + + def can_approve? + request? && can_update? + end + + private + + def admin_member_permission + raise NotImplementedError + end + + def update_member_permission + raise NotImplementedError + end + + def destroy_member_permission + raise NotImplementedError + end +end |