Commit a3b60982 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'leave-project' into 'master'

Add ability to leave project
Signed-off-by: default avatarDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>

See merge request !744
parents a1c45338 7815f9dd
...@@ -33,6 +33,7 @@ v 7.12.0 (unreleased) ...@@ -33,6 +33,7 @@ v 7.12.0 (unreleased)
- Move user avatar and logout button to sidebar - Move user avatar and logout button to sidebar
- You can not remove user if he/she is an only owner of group - You can not remove user if he/she is an only owner of group
- User should be able to leave group. If not - show him proper message - User should be able to leave group. If not - show him proper message
- User has ability to leave project
v 7.11.4 v 7.11.4
- Fix missing bullets when creating lists - Fix missing bullets when creating lists
......
...@@ -73,10 +73,14 @@ class Projects::ProjectMembersController < Projects::ApplicationController ...@@ -73,10 +73,14 @@ class Projects::ProjectMembersController < Projects::ApplicationController
end end
def leave 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 @project.project_members.find_by(user_id: current_user).destroy
respond_to do |format| respond_to do |format|
format.html { redirect_to :back } format.html { redirect_to dashboard_path }
format.js { render nothing: true } format.js { render nothing: true }
end end
end end
......
...@@ -294,4 +294,16 @@ module ProjectsHelper ...@@ -294,4 +294,16 @@ module ProjectsHelper
nil nil
end end
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 end
...@@ -40,7 +40,8 @@ ...@@ -40,7 +40,8 @@
&nbsp; &nbsp;
- if current_user == user - if current_user == user
= link_to leave_group_group_members_path(@group), data: { confirm: leave_group_message(@group.name)}, method: :delete, class: "btn-xs btn btn-remove", title: 'Remove user from group' do = link_to leave_group_group_members_path(@group), data: { confirm: leave_group_message(@group.name)}, method: :delete, class: "btn-xs btn btn-remove", title: 'Remove user from group' do
%i.fa.fa-minus.fa-inverse = icon("sign-out")
Leave
- else - else
= link_to group_group_member_path(@group, member), data: { confirm: remove_user_from_group_message(@group, member) }, method: :delete, remote: true, class: "btn-xs btn btn-remove", title: 'Remove user from group' do = link_to group_group_member_path(@group, member), data: { confirm: remove_user_from_group_message(@group, member) }, method: :delete, remote: true, class: "btn-xs btn btn-remove", title: 'Remove user from group' do
%i.fa.fa-minus.fa-inverse %i.fa.fa-minus.fa-inverse
......
...@@ -94,3 +94,15 @@ ...@@ -94,3 +94,15 @@
= icon("exclamation-triangle fw") = icon("exclamation-triangle fw")
Archived project! Archived project!
%p Repository is read-only %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
...@@ -38,8 +38,9 @@ ...@@ -38,8 +38,9 @@
&nbsp; &nbsp;
- if current_user == user - if current_user == user
= link_to leave_namespace_project_project_members_path(@project.namespace, @project), data: { confirm: "Leave project?"}, method: :delete, class: "btn-xs btn btn-remove", title: 'Leave project' do = link_to leave_namespace_project_project_members_path(@project.namespace, @project), data: { confirm: leave_project_message(@project) }, method: :delete, class: "btn-xs btn btn-remove", title: 'Leave project' do
%i.fa.fa-minus.fa-inverse = icon("sign-out")
Leave
- else - else
= link_to namespace_project_project_member_path(@project.namespace, @project, member), data: { confirm: remove_from_project_team_message(@project, member) }, method: :delete, remote: true, class: "btn-xs btn btn-remove", title: 'Remove user from team' do = link_to namespace_project_project_member_path(@project.namespace, @project, member), data: { confirm: remove_from_project_team_message(@project, member) }, method: :delete, remote: true, class: "btn-xs btn btn-remove", title: 'Remove user from team' do
%i.fa.fa-minus.fa-inverse %i.fa.fa-minus.fa-inverse
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment