Move Branches and Team into Settings as Pro features.
Deploy Ladill Frontdesk / deploy (push) Successful in 48s

Gate multi-branch and team management behind paid plans, nest their
routes under Settings, and remove them from the sidebar Administration
section.
This commit is contained in:
isaacclad
2026-07-16 08:13:42 +00:00
parent 59433f2b7b
commit 5526a10342
19 changed files with 377 additions and 50 deletions
@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Frontdesk;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Frontdesk\Concerns\RequiresPlanFeature;
use App\Http\Controllers\Frontdesk\Concerns\ScopesToAccount;
use App\Models\Branch;
use App\Models\Member;
@@ -13,11 +14,26 @@ use Illuminate\View\View;
class MemberController extends Controller
{
use RequiresPlanFeature;
use ScopesToAccount;
private const FEATURE = 'team';
private const UPGRADE_MESSAGE = 'Team management requires Frontdesk 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 Frontdesk Pro.',
)) {
return $upgrade;
}
$organization = $this->organization($request);
$members = Member::owned($this->ownerRef($request))
@@ -45,6 +61,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 team members with Frontdesk Pro.',
)) {
return $upgrade;
}
$organization = $this->organization($request);
$branches = Branch::owned($this->ownerRef($request))
@@ -71,6 +97,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);
@@ -119,6 +150,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.');
$member->delete();