Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Project Forum
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
EIP
Project Forum
Project Forum
Merge requests
!919
Resolve "Ability to leave company"
Code
Review changes
Check out branch
Open in Workspace
Download
Patches
Plain diff
Expand sidebar
Merged
Resolve "Ability to leave company"
509-ability-to-leave-company
into
development
Overview
1
Commits
8
Pipelines
0
Changes
5
Merged
Resolve "Ability to leave company"
Martin Mladenov
requested to merge
509-ability-to-leave-company
into
development
Nov 27, 2022
Overview
1
Commits
8
Pipelines
0
Changes
5
Closes
#509 (closed)
Edited
Dec 2, 2022
by
Martin Mladenov
0
0
Merge request reports
Compare
development
version 1
d06d41a6
Nov 27, 2022
development (base)
and
latest version
latest version
3e1997cc
8 commits,
Dec 2, 2022
version 1
d06d41a6
6 commits,
Nov 27, 2022
5 files
+
74
−
18
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
5
app/controllers/companies/roles_controller.rb
+
18
−
8
View file @ 3e1997cc
Edit in single-file editor
Open in Web IDE
Show full file
@@ -3,14 +3,13 @@ module Companies
class
RolesController
<
ApplicationController
# Users can only remove their own role, no permission check on role necessary
skip_authorization_check
load_resource
load_and_authorize_resource
:company
load_resource
:company
,
class:
'Company'
,
parent:
false
# Destroy the current users role
def
destroy
remove_current_role
redirect_to
offerer_url
(
@company
.
acting_as
)
redirect_to
current_user
.
role_student?
?
dashboard_path
:
companies_path
end
protected
@@ -18,14 +17,25 @@ module Companies
# Removes the current users employee role, checks whether there are enough employees on the company
# before removing the role.
def
remove_current_role
if
@company
.
confirmed_involved_users
.
count
>
1
if
current_user
.
remove_role
(
:employee
,
@company
)
flash
[
:success
]
=
'Successfully left the company'
success
=
false
if
current_user
.
has_role?
(
:unconfirmed_employee
,
@company
)
success
=
current_user
.
remove_role
(
:unconfirmed_employee
,
@company
)
end
if
current_user
.
has_role?
(
:employee
,
@company
)
if
@company
.
confirmed_involved_users
.
count
>
1
success
=
current_user
.
remove_role
(
:employee
,
@company
)
else
flash
[
:danger
]
=
'Failed to leave company'
flash
[
:danger
]
=
'Cannot leave company. The company must have at least one employee.'
return
end
end
if
success
flash
[
:success
]
=
'Successfully left the company'
else
flash
[
:danger
]
=
'Cannot leave company. The company must have at least one employee.'
flash
[
:danger
]
=
'Failed to leave company'
Sentry
.
capture_message
(
"Unable to remove role for
#{
current_user
.
id
}
for company
#{
@company
.
id
}
"
,
level: :error
)
end
end
end
Loading