Merge pull request #6884 from coollabsio/fix-invite-privilege-escalation

fix: critical privilege escalation in team invitation system
This commit is contained in:
Andras Bacsai authored and GitHub committed 2025-10-15 20:56:39 +02:00
commit 5c61b27a96
4 files changed
+373 -11

No files matched your search

+8 -1
View File
@@ -45,9 +45,16 @@ class InviteLink extends Component
try {
$this->authorize('manageInvitations', currentTeam());
$this->validate();
if (auth()->user()->role() === 'admin' && $this->role === 'owner') {
// Prevent privilege escalation: users cannot invite someone with higher privileges
$userRole = auth()->user()->role();
if ($userRole === 'member' && in_array($this->role, ['admin', 'owner'])) {
throw new \Exception('Members cannot invite admins or owners.');
}
if ($userRole === 'admin' && $this->role === 'owner') {
throw new \Exception('Admins cannot invite owners.');
}
$this->email = strtolower($this->email);
$member_emails = currentTeam()->members()->get()->pluck('email');
+5 -10
View File
@@ -42,8 +42,7 @@ class TeamPolicy
return false;
}
// return $user->isAdmin() || $user->isOwner();
return true;
return $user->isAdmin() || $user->isOwner();
}
/**
@@ -56,8 +55,7 @@ class TeamPolicy
return false;
}
// return $user->isAdmin() || $user->isOwner();
return true;
return $user->isAdmin() || $user->isOwner();
}
/**
@@ -70,8 +68,7 @@ class TeamPolicy
return false;
}
// return $user->isAdmin() || $user->isOwner();
return true;
return $user->isAdmin() || $user->isOwner();
}
/**
@@ -84,8 +81,7 @@ class TeamPolicy
return false;
}
// return $user->isAdmin() || $user->isOwner();
return true;
return $user->isAdmin() || $user->isOwner();
}
/**
@@ -98,7 +94,6 @@ class TeamPolicy
return false;
}
// return $user->isAdmin() || $user->isOwner();
return true;
return $user->isAdmin() || $user->isOwner();
}
}