Nest Branches and Team under Settings as Pro features.
Deploy Ladill Queue / deploy (push) Successful in 50s

Match Frontdesk: settings cards and nested routes, Pro-gated access,
and legacy /admin redirects to /settings/branches and /settings/team.
This commit is contained in:
isaacclad
2026-07-16 09:48:32 +00:00
parent 8be3eaeb4b
commit 26c9edc131
17 changed files with 629 additions and 165 deletions
@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Qms;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Qms\Concerns\RequiresPlanFeature;
use App\Http\Controllers\Qms\Concerns\ScopesToAccount;
use App\Models\Branch;
use App\Models\Member;
@@ -14,11 +15,26 @@ use Illuminate\View\View;
class MemberController extends Controller
{
use RequiresPlanFeature;
use ScopesToAccount;
private const FEATURE = 'team';
private const UPGRADE_MESSAGE = 'Team management requires Queue Pro.';
public function index(Request $request): View
{
$this->authorizeAbility($request, 'admin.members.view');
if ($upgrade = $this->proFeatureUpgradeView(
$request,
self::FEATURE,
'Team',
'Invite colleagues, assign roles, and scope access by branch with Queue Pro.',
)) {
return $upgrade;
}
$organization = $this->organization($request);
$members = Member::owned($this->ownerRef($request))
@@ -46,6 +62,16 @@ class MemberController extends Controller
public function create(Request $request, IdentityTeamClient $identity): View
{
$this->authorizeAbility($request, 'admin.members.manage');
if ($upgrade = $this->proFeatureUpgradeView(
$request,
self::FEATURE,
'Team',
'Invite colleagues and assign Queue roles with Pro.',
)) {
return $upgrade;
}
$organization = $this->organization($request);
$branches = Branch::owned($this->ownerRef($request))
@@ -72,6 +98,11 @@ class MemberController extends Controller
public function store(Request $request, IdentityTeamClient $identity): RedirectResponse
{
$this->authorizeAbility($request, 'admin.members.manage');
if ($deny = $this->denyWithoutFeature($request, self::FEATURE, self::UPGRADE_MESSAGE)) {
return $deny;
}
$organization = $this->organization($request);
$owner = $this->ownerRef($request);
@@ -122,6 +153,10 @@ class MemberController extends Controller
$this->authorizeAbility($request, 'admin.members.manage');
$this->authorizeOwner($request, $member);
if ($deny = $this->denyWithoutFeature($request, self::FEATURE, self::UPGRADE_MESSAGE)) {
return $deny;
}
abort_if($member->user_ref === $this->ownerRef($request), 422, 'You cannot remove yourself.');
$memberId = $member->id;