summaryrefslogtreecommitdiff
path: root/app/helpers
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-04-18 18:53:32 +0200
committerRémy Coutable <remy@rymai.me>2016-06-14 13:07:26 +0200
commitd26f81239a33b80694783ee35f0da0e2ed082c9b (patch)
treef092e818d4b81805a16879b13407a335bbda0054 /app/helpers
parent17c22156c5fa5663aae65178ed38cbeef9a80b7e (diff)
downloadgitlab-ce-d26f81239a33b80694783ee35f0da0e2ed082c9b.tar.gz
Add request access for groups
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'app/helpers')
-rw-r--r--app/helpers/groups_helper.rb20
-rw-r--r--app/helpers/members_helper.rb117
-rw-r--r--app/helpers/projects_helper.rb26
3 files changed, 119 insertions, 44 deletions
diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb
index 4cac69c6795..b9211e88473 100644
--- a/app/helpers/groups_helper.rb
+++ b/app/helpers/groups_helper.rb
@@ -1,24 +1,4 @@
module GroupsHelper
- def remove_user_from_group_message(group, member)
- if member.user
- "Are you sure you want to remove \"#{member.user.name}\" from \"#{group.name}\"?"
- else
- "Are you sure you want to revoke the invitation for \"#{member.invite_email}\" to join \"#{group.name}\"?"
- end
- end
-
- def leave_group_message(group)
- "Are you sure you want to leave \"#{group}\" group?"
- end
-
- def should_user_see_group_roles?(user, group)
- if user
- user.is_admin? || group.members.exists?(user_id: user.id)
- else
- false
- end
- end
-
def can_change_group_visibility_level?(group)
can?(current_user, :change_visibility_level, group)
end
diff --git a/app/helpers/members_helper.rb b/app/helpers/members_helper.rb
new file mode 100644
index 00000000000..6599c59d1c9
--- /dev/null
+++ b/app/helpers/members_helper.rb
@@ -0,0 +1,117 @@
+module MembersHelper
+ def member_class(member)
+ "#{member.source.class.to_s}Member".constantize
+ end
+
+ def members_association(entity)
+ "#{entity.class.to_s.underscore}_members".to_sym
+ end
+
+ def action_member_permission(action, member)
+ "#{action}_#{member.source.class.to_s.underscore}_member".to_sym
+ end
+
+ def can_see_entity_roles?(user, entity)
+ return false unless user
+
+ user.is_admin? || entity.send(members_association(entity)).exists?(user_id: user.id)
+ end
+
+ def member_path(member)
+ case member.source
+ when Project
+ namespace_project_project_member_path(member.source.namespace, member.source, member)
+ when Group
+ group_group_member_path(member.source, member)
+ else
+ raise ArgumentError.new('Unknown object class')
+ end
+ end
+
+ def resend_invite_member_path(member)
+ case member.source
+ when Project
+ resend_invite_namespace_project_project_member_path(member.source.namespace, member.source, member)
+ when Group
+ resend_invite_group_group_member_path(member.source, member)
+ else
+ raise ArgumentError.new('Unknown object class')
+ end
+ end
+
+ def request_access_path(entity)
+ case entity
+ when Project
+ request_access_namespace_project_project_members_path(entity.namespace, entity)
+ when Group
+ request_access_group_group_members_path(entity)
+ else
+ raise ArgumentError.new('Unknown object class')
+ end
+ end
+
+ def approve_request_member_path(member)
+ case member.source
+ when Project
+ approve_namespace_project_project_member_path(member.source.namespace, member.source, member)
+ when Group
+ approve_group_group_member_path(member.source, member)
+ else
+ raise ArgumentError.new('Unknown object class')
+ end
+ end
+
+ def leave_path(entity)
+ case entity
+ when Project
+ leave_namespace_project_project_members_path(entity.namespace, entity)
+ when Group
+ leave_group_group_members_path(entity)
+ else
+ raise ArgumentError.new('Unknown object class')
+ end
+ end
+
+ def withdraw_request_message(entity)
+ "Are you sure you want to withdraw your access request for the \"#{entity_name(entity)}\" #{entity_type(entity)}?"
+ end
+
+ def remove_member_message(member)
+ entity = member.source
+ entity_type = entity_type(entity)
+ entity_name = entity_name(entity)
+
+ if member.request?
+ "You are going to deny #{member.created_by.name}'s request to join the #{entity_name} #{entity_type}. Are you sure?"
+ elsif member.invite?
+ "You are going to revoke the invitation for #{member.invite_email} to join the #{entity_name} #{entity_type}. Are you sure?"
+ else
+ "You are going to remove #{member.user.name} from the #{entity_name} #{entity_type}. Are you sure?"
+ end
+ end
+
+ def remove_member_title(member)
+ member.request? ? 'Deny access request' : 'Remove user'
+ end
+
+ def leave_confirmation_message(entity)
+ "Are you sure you want to leave \"#{entity_name(entity)}\" #{entity_type(entity)}?"
+ end
+
+ private
+
+ def entity_type(entity)
+ entity.class.to_s.underscore
+ end
+
+ def entity_name(entity)
+ case entity
+ when Project
+ entity.name_with_namespace
+ when Group
+ entity.name
+ else
+ raise ArgumentError.new('Unknown object class')
+ end
+ end
+end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index a015b5e6a02..03941f87b13 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -1,16 +1,6 @@
module ProjectsHelper
- def remove_from_project_team_message(project, member)
- if !member.user
- "You are going to revoke the invitation for #{member.invite_email} to join #{project.name} project team. Are you sure?"
- elsif member.request?
- "You are going to deny #{member.user.name}'s request to join #{project.name} project team. Are you sure?"
- else
- "You are going to remove #{member.user.name} from #{project.name} project team. Are you sure?"
- end
- end
-
- def approve_for_project_team_message(project, member)
- "You are going to approve #{member.user.name}'s request for #{member.human_access} access to the #{project.name} project team. Are you sure?"
+ def max_access_level(project, user)
+ Gitlab::Access.options_with_owner.key(project.team.max_member_access(user.id))
end
def link_to_project(project)
@@ -121,14 +111,6 @@ module ProjectsHelper
end
end
- def user_max_access_in_project(user_id, project)
- level = project.team.max_member_access(user_id)
-
- if level
- Gitlab::Access.options_with_owner.key(level)
- end
- end
-
def license_short_name(project)
return 'LICENSE' if project.repository.license_key.nil?
@@ -292,10 +274,6 @@ module ProjectsHelper
end
end
- def leave_project_message(project)
- "Are you sure you want to leave \"#{project.name}\" project?"
- end
-
def new_readme_path
ref = @repository.root_ref if @repository
ref ||= 'master'