TenantAtlas/apps/platform/app/Services/Graph/NullGraphClient.php
ahmido ce0615a9c1 Spec 182: relocate Laravel platform to apps/platform (#213)
## Summary
- move the Laravel application into `apps/platform` and keep the repository root for orchestration, docs, and tooling
- update the local command model, Sail/Docker wiring, runtime paths, and ignore rules around the new platform location
- add relocation quickstart/contracts plus focused smoke coverage for bootstrap, command model, routes, and runtime behavior

## Validation
- `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/PlatformRelocation`
- integrated browser smoke validated `/up`, `/`, `/admin`, `/admin/choose-workspace`, and tenant route semantics for `200`, `403`, and `404`

## Remaining Rollout Checks
- validate Dokploy build context and working-directory assumptions against the new `apps/platform` layout
- confirm web, queue, and scheduler processes all start from the expected working directory in staging/production
- verify no legacy volume mounts or asset-publish paths still point at the old root-level `public/` or `storage/` locations

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #213
2026-04-08 08:40:47 +00:00

75 lines
2.4 KiB
PHP

<?php
namespace App\Services\Graph;
class NullGraphClient implements GraphClientInterface
{
public function listPolicies(string $policyType, array $options = []): GraphResponse
{
return new GraphResponse(
success: true,
data: [],
warnings: ['Graph client not configured; returning empty policy list']
);
}
public function getPolicy(string $policyType, string $policyId, array $options = []): GraphResponse
{
return new GraphResponse(
success: true,
data: [
'payload' => [
'id' => $policyId,
'type' => $policyType,
'source' => 'null-graph',
],
'warnings' => ['Graph client not configured; using stub payload'],
],
warnings: ['Graph client not configured; using stub payload'],
);
}
public function getOrganization(array $options = []): GraphResponse
{
return new GraphResponse(
success: true,
data: ['id' => $options['tenant'] ?? 'unset'],
warnings: ['Graph client not configured; returning stub organization']
);
}
public function applyPolicy(string $policyType, string $policyId, array $payload, array $options = []): GraphResponse
{
return new GraphResponse(
success: true,
data: ['status' => 'skipped', 'source' => 'null-graph'],
warnings: ['Graph client not configured; apply operation skipped']
);
}
public function getServicePrincipalPermissions(array $options = []): GraphResponse
{
// Return stub permissions from config
$grantedStub = config('intune_permissions.granted_stub', []);
return new GraphResponse(
success: true,
data: ['permissions' => $grantedStub],
warnings: ['Graph client not configured; using stub permissions from config']
);
}
public function request(string $method, string $path, array $options = []): GraphResponse
{
return new GraphResponse(
success: true,
data: [
'method' => strtoupper($method),
'path' => $path,
'options' => $options,
],
warnings: ['Graph client not configured; returning stub response'],
);
}
}