From 2afa5fcb52b6cec89872fe0794cba651f3ef3c86 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 29 May 2015 16:23:36 +0200 Subject: Add ability to leave project Signed-off-by: Dmitriy Zaporozhets --- app/controllers/projects/project_members_controller.rb | 6 +++++- app/helpers/projects_helper.rb | 12 ++++++++++++ app/views/projects/_aside.html.haml | 12 ++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/app/controllers/projects/project_members_controller.rb b/app/controllers/projects/project_members_controller.rb index d7fbc979067..b110de11013 100644 --- a/app/controllers/projects/project_members_controller.rb +++ b/app/controllers/projects/project_members_controller.rb @@ -73,10 +73,14 @@ class Projects::ProjectMembersController < Projects::ApplicationController end def leave + if @project.namespace == current_user.namespace + return redirect_to(:back, alert: 'You can not leave your own project. Transfer or delete the project.') + end + @project.project_members.find_by(user_id: current_user).destroy respond_to do |format| - format.html { redirect_to :back } + format.html { redirect_to dashboard_path } format.js { render nothing: true } end end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index f8df39d236a..94ce6646634 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -294,4 +294,16 @@ module ProjectsHelper nil end end + + def user_max_access_in_project(user, project) + level = project.team.max_member_access(user) + + if level + Gitlab::Access.options_with_owner.key(level) + end + end + + def leave_project_message(project) + "Are you sure you want to leave \"#{project.name}\" project?" + end end diff --git a/app/views/projects/_aside.html.haml b/app/views/projects/_aside.html.haml index 000a40b466d..9c2ff8f8402 100644 --- a/app/views/projects/_aside.html.haml +++ b/app/views/projects/_aside.html.haml @@ -94,3 +94,15 @@ = icon("exclamation-triangle fw") Archived project! %p Repository is read-only + + - if current_user + - access = user_max_access_in_project(current_user, @project) + - if access + .light-well.light.prepend-top-20 + %small + You have #{access} access to this project. + - if @project.project_member_by_id(current_user) + %br + = link_to leave_namespace_project_project_members_path(@project.namespace, @project), + data: { confirm: leave_project_message(@project) }, method: :delete, title: 'Leave project' do + Leave this project -- cgit v1.2.1