feat(tenant): add BootstrapTenantController and corresponding tests for tenant bootstrapping functionality

This commit is contained in:
2026-07-31 10:36:46 -03:00
parent 6dd057874a
commit 484fa204b3
3 changed files with 129 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Domains\Tenant\Controllers\AdminApp;
use App\Domains\Auth\Models\User;
use App\Domains\Tenant\Resources\TenantResource;
use App\Domains\Tenant\Services\TenantInformationService;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class BootstrapTenantController extends Controller
{
public function __construct(
protected TenantInformationService $tenantInformationService
) {}
public function __invoke(Request $request): TenantResource
{
/** @var User $user */
$user = $request->user();
$tenant = $user->tenant()->firstOrFail();
return TenantResource::make(
$this->tenantInformationService->load($tenant, [
'menues' => fn ($query) => $query
->where('code', 'like', 'admin.%')
->whereHas(
'roles',
fn ($query) => $query->where('codigo', $user->rol_codigo)
),
])
);
}
}

View File

@@ -1,11 +1,13 @@
<?php
use App\Domains\Tenant\Controllers\AdminApp\BootstrapTenantController;
use App\Domains\Tenant\Controllers\AdminApp\WebsiteExtraController;
use Illuminate\Support\Facades\Route;
Route::prefix('v1/adminapp/tenant')
->middleware(['auth:sanctum', 'adminapp.tenant'])
->group(function (): void {
Route::get('bootstrap', BootstrapTenantController::class);
Route::get('website-extras', [WebsiteExtraController::class, 'show']);
Route::get('website-extras/{websiteExtraCode}', [WebsiteExtraController::class, 'showExtra']);
Route::put('website-extras/{websiteExtraCode}', [WebsiteExtraController::class, 'update']);